白话Spring(基础篇)---bean之间的关系

[一知半解,就是给自己挖坑]

在前面的内容中,我们介绍了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





  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值