一步一步深入spring(3)--spring的依赖注入方式
对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到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>
(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
b.List集合注入:
1 <bean id=”……” class=”……”> 2 <list> 3 <value>value1</value> 4 <value>value2</value> 5 …… 6 </list> 7 </bean>
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>
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>
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;
b. 属性注入:
1 @Resource 2 public void setUserDao(UserDao dao){ 3 this.dao = dao; 4 }
----------------------------------------------------------------------------------------
如果您觉得阅读本文对您有帮助,请微信扫码关注作者,与我进行交流!欢迎各位转载,转载文章之后须在文章页面明显位置给出作者和原文连接,谢谢。
如果您觉得阅读本文对您有帮助,请微信扫码关注作者,与我进行交流!欢迎各位转载,转载文章之后须在文章页面明显位置给出作者和原文连接,谢谢。