一步一步深入spring(3)--spring的依赖注入方式

对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过springbean所需要的一些参数传递到bean实例对象的过程,spring的依赖注入有3种方式:

1.使用属性注入:

1 <bean id=”……” class=”……”>  
2        <property name=”属性1” value=”……”/>  
3        <property name=”属性2” value=”……”/>  
4        ……  
5 </bean>  

使用属性的setter注入方式时,所注入的属性必须提供setter和getter方法,spring在实例化时会自动调用无参数的构造方法或者静态工厂方法,实例化之后自动调用属性的set方法将值设置进去。

具体可分为:

(1)Spring中为一个bean注入其依赖的另一个bean时,通过使用ref来注入另一个bean,简单例子如下:

如果bean2中通过bean1属性引用了bean1则通过下面方式注入:

1 <bean id="personDao" class="com.yangyang.dao.impl.PersonDaoImpl">
2 </bean>
3 
4 <!-- 采用内部注入bean注入依赖对象 -->
5 <bean id="personService2" class="com.yangyang.service.impl.PersonServiceImpl"> 
6 <property name="personDao" ref="personDao"></property> 
7 <property name="name" value="yangyang"></property> 
8 <property name="age" value="23"></property> 
9 </bean>
View Code

(2)spring的集合注入:

当需要给Bean的集合引用注入值时,spring也提供了相应的方法:

a.Set集合注入:

1 <bean id=”……” class=”……”>  
2 <set>  
3               <value>value1</value>  
4               <value>value2</value>  
5               ……  
6        </set>  
7 </bean>  
8  
View Code

b.List集合注入:

1 <bean id=”……” class=”……”>  
2 <list>  
3               <value>value1</value>  
4               <value>value2</value>  
5               ……  
6        </list>  
7 </bean>  
View Code

c.Map集合注入:

1 <bean id=”……” class=”……”>  
2 <map>  
3               <entry key=”key1” value=”value1”>  
4               <entry key=”key2” value=”value2”>  
5               ……  
6        </map>  
7 </bean>  
View Code

d.Properties注入:

1 <bean id=”……” class=”……”>  
2 <props>  
3               <prop key=”key1”>value1</prop>  
4               <prop key=”key2”>value2</prop>  
5               ……  
6        </props>  
7 </bean>  
View Code

2.使用构造器注入:

1 <bean id=”……” class=”……”>  
2        <constructor-arg>构造函数需要的参数1</constructor-arg>  
3        <constructor-arg>构造函数需要的参数2</constructor-arg>  
4        ……  
5 </bean>  

使用构造器注入方式时:spring在实例化该Bean时会调用配置参数符合的构造方法。

3.使用注解的方式注入:

使用Field字段注入方式,该方式是spring2.5以后提供的基于java 注解(annotation)方式的注入,就是在java中的字段上或者setter方法上通过使用注解方式进行spring的依赖注入。

例如:

a.字段注入: 

1 @Resource  
2 private  UserDao dao;
View Code

b. 属性注入:

1 @Resource  
2 public void setUserDao(UserDao dao){  
3        this.dao = dao;  
4 }  
View Code

 

posted @ 2013-08-27 23:22  静静的码农  阅读(1386)  评论(0编辑  收藏  举报