Spring基础10——Bean之间关系

1.前言

 

不同的Bean之间存在两种关系:继承和依赖,这里的继承与java中的继承不同,它指的是配置上的继承。

 

2.继承bean配置

Spring允许继承bean的配置,被继承的bean成为父bean,继承这个父bean的Bean称为子bean,继承bean主要有以下几个特点:

      1)子Bean从父Bean中继承配置,包括Bean的属性配置

      2)子Bean也可以覆盖从父Bean继承过来的配置,如父bean设置name为zhangsan,子Bean中可以把name的值覆盖为Lisi.

      3)父Bean可以作为配置模板,也可以作为Bean实例,若只想把父Bean作为模板,可以设置<bean>的abstract属性为true,这样Spring将不会实例化这个Bean并不是<bean>元素里的所有元素都会被继承,比如autowire,abstract等

      4)也可以忽略父Bean的class属性,让子Bean指定自己的类,而共享相同的属性配置,但此时abstract必须设置为true

      5)  一个abstract属性为true的bean是不会被容器实例化的,它是一个抽象Bean。

     

具体配置文件:

1 <!--抽象bean不能被IOC容器实例化,只用来被继承配置 abstract="true",如果一个bean没有指定class那么它必须是一个抽象bean-->
2     <bean id="address" class="com.wzy.autowire.Address" p:city="BeiJing" p:street="HuangLongGuan" abstract="true"/>
3 
4     <!--bean配置的继承:当两个bean的配置几乎一样,使用bean的parent属性继承哪个bean的配置-->
5     <bean id="address2" p:street="WuDaoKou" parent="address"/>
6 
7     <bean id="car" class="com.wzy.autowire.Car" p:brand="AUDI" p:price="300000"/>

3.依赖Bean配置

Spring允许用户通过depends-on属性设定Bean前置依赖的bean,前置依赖的bean会在本Bean实例化之前创建好。如果前置依赖于多个Bean,则可以通过逗号、空格的方式配置Bean的名称。

具体配置文件:

1 <!--要求在配置Person时,必须有一个关联的car!换句话说person这个bean依赖于Car这个bean-->
2     <bean id="person" class="com.wzy.autowire.Person" p:address-ref="address2" p:name="wzy" depends-on="car"/>

 

总结:depends-on适用于表面上看起来两个bean之间没有使用属性之类的强连接的bean,但是两个bean又确实存在前后依赖关系的情况,使用了depends-on的时候,依赖他人的bean是先于被依赖bean销毁的,相比于ref属性,ref表示的bean是与当前bean之间是有关联的,是需要注入当前bean的属性中的,而depends-on是将两个bean进行强关联,来保证创建和销毁的顺序。

 

 

转载于:https://www.cnblogs.com/fengyun2019/p/10832515.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值