Construct注入
现在有一个 Person
类和一个依赖它的 Service
类
package com.skyline.model;
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class MyServiceImpl implements MyService {
private Person person;
private String greeting;
public MyServiceImpl(Person person, String greeting)
{
this.person = person;
this.greeting = greeting;
}
@Override
public String sayHello() {
return this.greeting + " " + this.person.getName();
}
}
然后 bean.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="aPerson" class="com.skyline.model.Person">
<property name="name" value="Chester"/>
</bean>
<bean id="myService" class="com.skyline.service.MyServiceImpl">
<constructor-arg ref="aPerson"/>
<constructor-arg type="java.lang.String" value="Hello"/>
</bean>
</beans>
Setter注入
通过 setXxx
来注入, 上例中的 Person
就是
public class MyServiceImpl implements MyService {
private Person person;
private String greeting;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public String getGreeting() {
return greeting;
}
public void setGreeting(String greeting) {
this.greeting = greeting;
}
@Override
public String sayHello() {
return this.greeting + " " + this.person.getName();
}
}
配置文件:
<bean id="aPerson" class="com.skyline.model.Person">
<property name="name" value="Chester"/>
</bean>
<bean id="myService" class="com.skyline.service.MyServiceImpl">
<property name="person" ref="aPerson"/>
<property name="greeting" value="Hello"/>
</bean>