【Spring】Bean之间的关系

Bean之间的关系



IOC容器中的Bean之前存在两种关系:继承和依赖。

继承

不同于Java中的继承,这里指的是配置上的继承。可以通过parent属性指定要继承的父Bean。可以继承父Bean的配置,但是不是所有的属性都可以被继承,如autowire、abstract,子Bean可以覆盖从父Bean中继承下来的属性。可以配置abstract属性为true使得这个Bean成为抽象Bean,抽象Bean不能被实例化,仅作为模板,用来被继承配置。但是如果一个Bean没有指定class属性,那么必须把它声明为抽象Bean。

假设我们实际开发中遇到如下情况:
这里写图片描述
配置了5个地址Bean,也可能会有更多,可以看出来他们的属性重复的部分比较多,如果Bean数量很多,并且属性也很多的话,我们的配置文件就会变得复杂,冗余,这时候我们可以使用继承,来简化配置文件:
这里写图片描述
让address1作为其他4个address的父Bean,然后继承address1的配置。当然也可以添加一个抽象的address作为模板,让其他Bean继承。
这里写图片描述
注意:抽象Bean是无法实例化的。
这里写图片描述

依赖

Spring允许用户通过depends-on属性设定Bean前置依赖的Bean,前置依赖的Bean会在本Bean实例化之前创造好。如果有多个依赖的Bean则可以通过逗号或空格的方式配置Bean的名称。
如果depends-on所指定的对象没有就会报错:
这里写图片描述
依赖并不是装配,从下图的运行结果可以看出,car并没有被装配。只是保证了在person实例化之前,car以及被实例化了。
这里写图片描述
这个depends-on并不一定要像上面的例子一样,要求A有B的一个引用,也就是不直接依赖也是可以的,它就是保证,B在A实例化之前已经实例化了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值