概述
[一知半解,就是给自己挖坑]
在前面的内容中,我们介绍了Spring的bean的各种注入及配置方式。本文我们将来介绍Spring中bean之间的关系,他们之间的关系包括继承,依赖,引用三种方式。按照惯例,首先我们来准备一下我们的开发环境:
a.操作系统:win7 x64
b.开发工具:eclipse mars j2ee版本,maven3.3.2,Spring 4,junit4.12
c.复制Spring06工程,重命名为Spring07工程。工程结构图如下:
------------------------------------------------------------------------------------------------------------------------------------------------------
正文开始:
一,继承关系
1.修改beans.xml配置文件为如下内容:
<?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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="AbstractRecord" class="com.java.ingo.entity.Record" abstract="true">
<property name="company" value="ABCD"></property>
</bean>
<bean id="Record" parent="AbstractRecord">
<property name="position" value="Engineer"></property>
<property name="address" value="Beijing"></property>
</bean>
</beans>
2.修改单元测试方法为如下内容:
@org.junit.Test
public void test1() {
System.out.println("Start Test()");
Record customer1 = (Record)ac.getBean("Record");
System.out.println(customer1);
}
3.测试方法:在test1方法上,右键run as--->junit test。观察控制台输出结果即可。
注意:这里请读者再在id为Record的bean上增加属性company的配置,再次运行单元测试方法,观察输出结果与上文输出结果的区别。
结论:Spring的继承关于与Java的继承关系思想一致。但使用的配置关键字为abstract。
-----------------------------------------------
二,依赖关系
1.修改beans.xml为如下内容:
<?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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="AbstractRecord" class="com.java.ingo.entity.Record" abstract="true">
<property name="company" value="ABCD"></property>
</bean>
<bean id="Record" parent="AbstractRecord">
<property name="position" value="Engineer"></property>
<property name="address" value="Beijing"></property>
</bean>
<bean id="Customer1" class="com.java.ingo.entity.Customer">
<property name="name" value="Tom"></property>
<property name="sex" value="male"></property>
<property name="age" value="22"></property>
</bean>
</beans>
2.在Customer.java,Record.java中的构造函数中分别加入System.out.println("------创建人员-------");与System.out.println("--------创建记录--------");
3.测试方法:在test1方法上,右键run as--->junit test。观察控制台输出结果即可。
控制台的输出结果为如下内容:
这时,我们观察到:创建记录的动作先于创建人员。这是不符合业务逻辑的。因此我们需要利用bean之间的依赖关系来处理此需求。
改进方法:
1.将id为Record的bean修改为如下内容:
<bean id="Record" parent="AbstractRecord" depends-on="Customer1">
<property name="position" value="Engineer"></property>
<property name="address" value="Beijing"></property>
</bean>
2.再次运行测试方法,观察控制台的输出结果即可
注意,依赖关系可以多级,多个存在。即如下面的形式
a.A--->B--->C--->D。配置方式为:依赖项A仅配置相邻依赖项B,而不配置CD的
b.A,B--->C--->D。配置方式为:依赖项A仅配置相邻依赖项C,依赖项B仅配置相邻依赖项C,而不配置D的
c.A--->B,C--->D。配置方式为:依赖项A配置相邻依赖项B,C。即使用逗号链接,如depends-on=“idA,idB”
--------------------------------------------------------
三,引用关系
引用关系的使用方法就是我们在前文中多次演示的ref="id"的用法。这里不再赘述,有疑问的读者可以参考【白话Spring(基础篇)---参数注入】中的【二.使用注入bean的方式注入】
-----------------------------------------------------------------------------------------------------------------------------------------------------
至此,白话Spring(基础篇)---bean之间的关系结束
备注:
经过前面的单元方法用例,我们发现Spring中bean的使用及配置存在重合部分,希望读者能够将重合的使用方法联系起来配置与使用。以便更好的达成我们的需求设计
参考资料:
Spring官网:http://spring.io/docs
最后
以上就是会撒娇发夹为你收集整理的白话Spring(基础篇)---bean之间的关系的全部内容,希望文章能够帮你解决白话Spring(基础篇)---bean之间的关系所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复