spring4第3课-ioc控制反转-详解依赖注入的4种方式
1,属性注入;
2,构造函数注入;(通过类型;通过索引;联合使用)
3,工厂方法注入;(非静态工厂,静态工厂)
4,泛型依赖注入;(Spring4 整合 Hibernate4 的时候顺带讲)
详细解释
1,属性注入;
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--定义2个bean:lisi--><bean id="lisi" class="com.java1234.service.Lisi"></bean><bean id="javaWork" class="com.java1234.service.JavaWork"><property name="tester" ref="lisi"></property></bean>
</beans>
这里就是一种对象注入 <property name="tester" ref="lisi"></property>
如果对象有age的属性,对value的设置10就是属性注入,代码如下:
<bean id="people2" class="com.java1234.entity.People"> <property name="id" value="1"></property><property name="name" value="张三"></property><property name="age" value="11"></property> </bean>
2,构造函数注入;(通过字段类型;通过索引(也就是字段顺序);联合使用(字段顺序+字段类型))
<!-- 构造方法注入-字段类型--> <bean id="people3" class="com.java1234.entity.People"><constructor-arg type="int" value="2"></constructor-arg><constructor-arg type="String" value="李四"></constructor-arg><constructor-arg type="int" value="22"></constructor-arg> </bean> <!-- 构造方法注入-字段顺序0,1,2 --> <bean id="people4" class="com.java1234.entity.People"><constructor-arg index="0" value="3"></constructor-arg><constructor-arg index="1" value="王五"></constructor-arg><constructor-arg index="2" value="55"></constructor-arg> </bean> <!-- 构造方法注入 ,字段顺序+字段类型--> <bean id="people5" class="com.java1234.entity.People"><constructor-arg index="0" type="int" value="4"></constructor-arg><constructor-arg index="1" type="String" value="招六"></constructor-arg><constructor-arg index="2" type="int" value="66"></constructor-arg> </bean>
3,工厂方法注入;(非静态工厂,静态工厂)
3.1)非静态工厂:
<bean id="peopleFactory" class="com.java1234.factory.PeopleFactory"></bean>
<bean id="people7" factory-bean="peopleFactory" factory-method="createPeople"></bean>
<! -- 上面的peopleFactory是工厂bean,createPeople是工厂bean的方法-->
3.2)静态工厂:( 由static修饰(类PeopleFactory2的)createPeople方法,又因为是static类型,可以直接使用类型class,可以不需要像非静态工厂那样还使用factory-bean)
<bean id="people8" class="com.java1234.factory.PeopleFactory2" factory-method="createPeople"></bean>
4,泛型依赖注入;(Spring4 的新功能 )