Spring学习 Ioc篇(二 )

5、spring依赖注入的方式

方法一:使用构造器方式进行注入

1、dao的类和接口

Java代码  
  1. package com.cvicse.dao.impl;  
  2.   
  3. import com.cvicse.dao.PersonDao;  
  4.   
  5. public class PersonDaoBean implements PersonDao {  
  6.     public void add(){  
  7.         System.out.println("执行PersonDaoBean中的add()方法");  
  8.     }  
  9. }  
Java代码  
  1. package com.cvicse.service;  
  2.   
  3. public interface PersonService {  
  4.     public void save();  
  5. }  

 2、service类

Java代码  
  1. import com.cvicse.dao.PersonDao;  
  2. import com.cvicse.service.PersonService;  
  3.   
  4. public class PersonServiceBean implements PersonService {  
  5.     private PersonDao personDao;  
  6.     private String name;      
  7.       
  8.     public PersonServiceBean(PersonDao personDao, String name) {  
  9.         this.personDao = personDao;  
  10.         this.name = name;  
  11.     }  
  12.   
  13.     public void save(){  
  14.         System.out.println(name);  
  15.         personDao.add();  
  16.     }  
  17. }  

 要在构造函数进行注入,应采用如下的方式进行配置

Xml代码  
  1. <bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean" />   
  2. <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">  
  3. <constructor-arg index="0" type="cn.itcast.dao.PersonDao" ref="personDao"/>  
  4. <constructor-arg index="1" type=“java.lang.String” value="基本类型"/>   
  5.  </bean>   

方法二:使用setter方法进行注入

 采用setter的方法进行注入时,基本属性和业务对象的注入有所不同,而基本类型的中的集合注入也是应该注意的。

1、service类

Java代码  
  1. public class PersonServiceBean implements PersonService {  
  2.     private Set<String> sets = new HashSet<String>();  
  3.     private List<String> lists = new ArrayList<String>();  
  4.     private Properties properties = new Properties();  
  5.     private Map<String, String> maps = new HashMap<String, String>();  
  6.       
  7.     public Map<String, String> getMaps() {  
  8.         return maps;  
  9.     }  
  10.   
  11.     public void setMaps(Map<String, String> maps) {  
  12.         this.maps = maps;  
  13.     }  
  14.   
  15.     public Properties getProperties() {  
  16.         return properties;  
  17.     }  
  18.   
  19.     public void setProperties(Properties properties) {  
  20.         this.properties = properties;  
  21.     }  
  22.   
  23.     public Set<String> getSets() {  
  24.         return sets;  
  25.     }  
  26.   
  27.     public void setSets(Set<String> sets) {  
  28.         this.sets = sets;  
  29.     }  
  30.   
  31.     public List<String> getLists() {  
  32.         return lists;  
  33.     }  
  34.   
  35.     public void setLists(List<String> lists) {  
  36.         this.lists = lists;  
  37.     }  
  38.   
  39.     public void save(){  
  40.           
  41.     }  
  42. }  

Java代码  
  1.   

2.XML中的配置(注意,各种类型都具有了)

Java代码  
  1. <bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean" />   
  2. <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">  
  3. <!--业务对象的注入方式 -->  
  4.   <property name="personDao" ref="personDao" />   
  5. <!--基本属性的注入方式 -->  
  6.    <property name="name" value="itcast" />   
  7.   <property name="id" value="88" />   
  8. <!--集合的注入方式 -->  
  9. <property name="sets">  
  10. <set>  
  11.   <value>第一个</value>   
  12.   <value>第二个</value>   
  13.   <value>第三个</value>   
  14.   </set>  
  15.   </property>  
  16. <property name="lists">  
  17. <list>  
  18.   <value>第一个list元素</value>   
  19.   <value>第二个list元素</value>   
  20.   <value>第三个list元素</value>   
  21.   </list>  
  22.   </property>  
  23. <property name="properties">  
  24. <props>  
  25.   <prop key="key1">value1</prop>   
  26.   <prop key="key2">value2</prop>   
  27.   <prop key="key3">value3</prop>   
  28.   </props>  
  29.   </property>  
  30. <property name="maps">  
  31. <map>  
  32.   <entry key="key-1" value="value-1" />   
  33.   <entry key="key-2" value="value-2" />   
  34.   <entry key="key-3" value="value-3" />   
  35.   </map>  
  36.   </property>  
  37.   </bean>  

 另外,对于业务对象,还具有如下的内部bean配置方式,但如果这样配置了,则该bean只能由外边的bean用

 

Xml代码  
  1. <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">  
  2. <!-- 使用内部bean进行注入-->   
  3.             <property name="personDao">  
  4.                 <bean class="cn.itcast.dao.impl.PersonDaoBean"/>  
  5.             </property>  
  6.   </bean>  

方法三:使用Filed方式注入(即注解方式注入)






原文地址:https://www.cnblogs.com/jeffen/p/6155484.html