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

时间:2024-01-12 08:52:50

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

1.使用属性注入:

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

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

具体可分为:

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

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

 <bean id="personDao" class="com.yangyang.dao.impl.PersonDaoImpl">
</bean> <!-- 采用内部注入bean注入依赖对象 -->
<bean id="personService2" class="com.yangyang.service.impl.PersonServiceImpl">
<property name="personDao" ref="personDao"></property>
<property name="name" value="yangyang"></property>
<property name="age" value="23"></property>
</bean>

(2)spring的集合注入:

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

a.Set集合注入:

 <bean id=”……” class=”……”>
<set>
<value>value1</value>
<value>value2</value>
……
</set>
</bean>

b.List集合注入:

 <bean id=”……” class=”……”>
<list>
<value>value1</value>
<value>value2</value>
……
</list>
</bean>

c.Map集合注入:

 <bean id=”……” class=”……”>
<map>
<entry key=”key1” value=”value1”>
<entry key=”key2” value=”value2”>
……
</map>
</bean>

d.Properties注入:

 <bean id=”……” class=”……”>
<props>
<prop key=”key1”>value1</prop>
<prop key=”key2”>value2</prop>
……
</props>
</bean>

2.使用构造器注入:

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

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

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

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

例如:

a.字段注入:

 @Resource
private UserDao dao;

b. 属性注入:

 @Resource
public void setUserDao(UserDao dao){
this.dao = dao;
}