一:经过前面的学习我们知道,通过控制反射可以将依赖对象交给Spring管理,

通过容器注入到组件内部。

二:在spring是如何将对象注入到组件内部?

1、创建类PresonDaoImpl,代码如下:


2、抽取出接口(在前面讲过,这里不再赘余。)

3、将 PresonDao 注入到 PresonServiceImpl 中

(1)、通过属性的 setter 方法注入

<1>、PresonServiceImpl  代码如下:

属性注入依赖对象的时候,一定要有setter方法,只能通过 setter 方法为属性注入值。在save() 方法调用注入进来的依赖对象的add() 方法。在 PresonServiceImpl 类中我们看不到 PresonDaoImpl 这个类,也就是说我们并不关心 dao 的实现类是谁。只是通过接口 PresonDao 引用注入进来的对象,然后通过接口调用方法。这样,service层的组件和 dao 层的组件实现了彻底的解耦。

<2>、如何给属性 presonDao 注入bean?首先要将 PresonDaoImpl 配置在spring的 xml 文件中。修改 xml 代码如下:

property 元素表示的是为父节点bean 所对应的类中的属性注入值。name 属性的值 presonDao 要与PresonServiceImpl 类中属性名称 presonDao 一致,表示了要注入的属性;要将 bean(对象)注入到属性presonDao中,要用到ref, 属性 ref 的值 就是要注入到 属性 presonDao 中bean的 id 值。

<3>、调用测试:

(2)、通过内部 bean 注入依赖对象

<1>、现在我们只需要修改 XML 文件即可,代码如下:

<2>、单元测试代码如下:



4、内部是如何实现注入的呢?

(1)、创建类 PropertyDefinition ,用于存放xml文件中 property 元素的信息,代码如下:

 

(2)、在 BeanDefinition(之前创建过) 类中定义List 集合,用于存放 bean 元素下面所有 property 元素信息,代码如下:

 

(3)、修改 TestClassPathXMLApplicationContext (之前创建过)类,代码如下:


(4)、XML 文件如下:

 

(5)、调用测试:

 

posted on 2013-11-23 12:56  hwlsniper  阅读(221)  评论(0)    收藏  举报