所谓setter方法注入就是通过依赖对象或者类变量的setter方法得到依赖的对象或基本类型对象。 所以这种方式必须实现依赖对象和类变量的setter方法。
注入依赖对象
我们在spring中对于DAO层也就是数据层一般都是面向借口编程,我们create一个bean 他有一个业务方法add
public interface personDAO{
void add();
}
public class PersonDAOImpl implements personDAO{
publich void add () {
System.out.println("invoke add function");
}
}
然后又一个业务层类PersonService,同样也是面向接口编程
public interface PersonService {
void save();
}
我们要向把依赖对象PersonDAO注入到personservicebean, 我们首先需要创建类变量以及getter和setter方法。
public class PersonServiceBean implements PersonService{
public void save() {
}
public PersonDAO getPersonDAO() {
return _personDAO
}
public void setPersonDAO (PersonDAO personDAO) {
_personDAO = personDAO
}
private _personDAO;
}
然后再spring配置文件中:
方法一 Property属性
1. 配置PersonDAO bean
<bean id=personDAO class ="com.web.resource.PersonDAOImpl"></bean>
<bean id=personService class = "com.web.service.PersonServiceBean"></bean>
2. 通过bean的property属性把PersonDAO注入到personSeriveBean中
<bean id=personDAO class ="com.web.resource.PersonDAOImpl"/>
<bean id=personService class = "com.web.service.PersonServiceBean">
<property name ="personDAO" refer ="personDAO"><、property>
</bean>
方法二 内部Bean
<bean id=personDAO class ="com.web.resource.PersonDAOImpl"/>
<bean id=personService class = "com.web.service.PersonServiceBean">
<property name ="personDAO">
<bean class = "com.web.resource.PersonDAOImpl"></bean>
</property>
</bean>
注入基本类型
比如PersonServiceBean 有基本类型变量name 和id
public class PersonServiceBean implements PersonService{
public void save() {
}
public PersonDAO getPersonDAO() {
return _personDAO
}
public void setPersonDAO (PersonDAO personDAO) {
_personDAO = personDAO
}
private _personDAO;
public String getName() {
return _name;
}
public void setNaem (String name) {
_name = name;
}
public Interger getId() {
return _id;
}
publich void setId(Interger id) {
_id =id
}
private String _name;
private Integer _id;
}
那么我们在配置文件中配置如下
<bean id=personDAO class ="com.web.resource.PersonDAOImpl"></bean>
<bean id=personService class = "com.web.service.PersonServiceBean">
<property name ="personDAO">
<bean class = "com.web.resource.PersonDAOImpl"></bean>
</property>
<property name ="name" value = "defaultname"></property>
<property name ="id" value ="defaultid"></property>
</bean>
我们可以直接通过在配置文件中设置基本类型常量的value
注入集合对象
public class PersonServiceBean implements PersonService{ public void save() { } public PersonDAO getPersonDAO() { return _personDAO } public void setPersonDAO (PersonDAO personDAO) { _personDAO = personDAO } public Set<String> getSetObj() { return _setObj; } public void setSetObj() (Set<String> setObj) { _setObh = setObj } private _personDAO; private Set<String> _setObj; }
<bean id=personDAO class ="com.web.resource.PersonDAOImpl"></bean> <bean id=personService class = "com.web.service.PersonServiceBean"> <property name ="personDAO"> <bean class = "com.web.resource.PersonDAOImpl"></bean> </property> <property name ="name" value = "defaultname"></property> <property name ="id" value ="defaultid"></property> <property name = "setObj"> <set> <value> fiest one</value> <value>second one</value> <value> third one</value> </set> </property> </bean>