对象依赖注入
依赖注入是指运行时将Spring IoC容器内的对象利用反射赋值给其他对象的操作
在 第一个 Spring IoC 应用中我们定义了两个类 Apple 和 Child, 其关系是 小孩吃苹果, 那么我们需要先声明一个苹果对象,再将这个苹果对象传入到 小孩对象中,这就是依赖注入,小孩对象需要拿到 苹果对象。对象
基于 setter 方法依赖注入
在 applicationContext.xml 文件中添加下面两个 bean. 第一个 bean 定义了一个 sweetApple 对象,通过property 标签 调用对应的 setter 方法 对 成员属性进行注入。第二个 bean 定义了 一个 lily 对象,还是利用 property 标签调用对应的setter 方法对成员属性进行注入。特别的是 lily 对象需要拿到 sweetApple 对象,用到了 property 标签内的 ref 属性进行获取,传入 需要拿到的对象 bean id 即可。
<!-- 通过 setter 实现对象属性注入 -->
<bean id="sweetApple" class="indi.chester.spring.ioc.entity.Apple">
<!-- Ioc 容器自动利用反射机制在运行时吊桶 setter 方法为属性赋值 -->
<property name ="title" value="红富士"/>
<property name="color" value="红色"/>
<property name="origin" value="欧洲"/>
<property name="price" value="9.9"/>
</bean>
<!-- 通过 setter 实现对象注入 -->
<bean id="lily" class="indi.chester.spring.ioc.entity.Child">
<property name="name" value="Lily"/>
<!-- 注入依赖对象 -->
<property name="apple" ref="sweetApple"/>
</bean>
基于构造方法进行注入对象
在 applicationContext.xml 文件中添加下面两个 bean. 其中第一个 bean 是利用 setter 方法实现对象属性注入。另一个bean 用到了 constructor-arg 标签,调用了对应的构造方法实现依赖注入。
<!-- 通过 setter 实现对象属性注入 -->
<bean id="sourApple" class="indi.chester.spring.ioc.entity.Apple">
<!-- Ioc 容器自动利用反射机制在运行时吊桶 setter 方法为属性赋值 -->
<property name ="title" value="青苹果"/>
<property name="color" value="绿色"/>
<property name="origin" value="中亚洲"/>
<property name="price" value="7.9"/>
</bean>
<!-- 通过 构造方法实现依赖 注入 -->
<bean id="tom" class="indi.chester.spring.ioc.entity.Child">
<constructor-arg name="name" value="Tom"/>
<constructor-arg name="apple" ref="sourApple"/>
</bean>
Last updated