5、spring依赖注入的方式
方法一:使用构造器方式进行注入
1、dao的类和接口
package com.cvicse.dao.impl; import com.cvicse.dao.PersonDao; public class PersonDaoBean implements PersonDao { public void add(){ System.out.println("执行PersonDaoBean中的add()方法"); } }
package com.cvicse.service; public interface PersonService { public void save(); }
2、service类
import com.cvicse.dao.PersonDao; import com.cvicse.service.PersonService; public class PersonServiceBean implements PersonService { private PersonDao personDao; private String name; public PersonServiceBean(PersonDao personDao, String name) { this.personDao = personDao; this.name = name; } public void save(){ System.out.println(name); personDao.add(); } }
要在构造函数进行注入,应采用如下的方式进行配置
<bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean" /> <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean"> <constructor-arg index="0" type="cn.itcast.dao.PersonDao" ref="personDao"/> <constructor-arg index="1" type=“java.lang.String” value="基本类型"/> </bean>
方法二:使用setter方法进行注入
采用setter的方法进行注入时,基本属性和业务对象的注入有所不同,而基本类型的中的集合注入也是应该注意的。
1、service类
public class PersonServiceBean implements PersonService { private Set<String> sets = new HashSet<String>(); private List<String> lists = new ArrayList<String>(); private Properties properties = new Properties(); private Map<String, String> maps = new HashMap<String, String>(); public Map<String, String> getMaps() { return maps; } public void setMaps(Map<String, String> maps) { this.maps = maps; } public Properties getProperties() { return properties; } public void setProperties(Properties properties) { this.properties = properties; } public Set<String> getSets() { return sets; } public void setSets(Set<String> sets) { this.sets = sets; } public List<String> getLists() { return lists; } public void setLists(List<String> lists) { this.lists = lists; } public void save(){ } }
2.XML中的配置(注意,各种类型都具有了)
<bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean" /> <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean"> <!--业务对象的注入方式 --> <property name="personDao" ref="personDao" /> <!--基本属性的注入方式 --> <property name="name" value="itcast" /> <property name="id" value="88" /> <!--集合的注入方式 --> <property name="sets"> <set> <value>第一个</value> <value>第二个</value> <value>第三个</value> </set> </property> <property name="lists"> <list> <value>第一个list元素</value> <value>第二个list元素</value> <value>第三个list元素</value> </list> </property> <property name="properties"> <props> <prop key="key1">value1</prop> <prop key="key2">value2</prop> <prop key="key3">value3</prop> </props> </property> <property name="maps"> <map> <entry key="key-1" value="value-1" /> <entry key="key-2" value="value-2" /> <entry key="key-3" value="value-3" /> </map> </property> </bean>
另外,对于业务对象,还具有如下的内部bean配置方式,但如果这样配置了,则该bean只能由外边的bean用
<bean id="personService" class="cn.itcast.service.impl.PersonServiceBean"> <!-- 使用内部bean进行注入--> <property name="personDao"> <bean class="cn.itcast.dao.impl.PersonDaoBean"/> </property> </bean>
方法三:使用Filed方式注入(即注解方式注入)