Bean之间的关系

本文介绍Spring框架中Bean的配置方式,包括Bean之间的继承关系配置及依赖关系配置。具体讲解了如何通过父Bean来简化子Bean的配置过程,并介绍了依赖配置的depends-on属性,确保某些Bean在特定Bean实例化前完成初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Bean之间的关系:继承;依赖

【继承Bean的配置】

1.Spring允许继承bean的配置,被继承的bean称为父bean。继承这个父bean的Bean称为子bean。

2.子Bean从父Bean中继承配置,包括Bean的属性配置

3.子Bean也可以覆盖从父Bean继承过来的配置。

/spring-1/src/beans-relation.xml:

1 <bean id="address" class="com.hk.beans.autowire.Address"
2       p:city="Beijing^" p:street="WuDaoKou"></bean>
3 
4 <!-- bean配置的继承:使用bean的parent属性,继承哪个配置 -->
5 <bean id="address2" p:city="Beijing" p:street="GuoMao" parent="address"></bean>

运行结果:

 

4.父Bean可以作为配置版本,也可以作为Bean实例。若只想把父Bean作为模板,可以设置<bean>的abstract属性设为true,这样Spring将不会实例化这个Bean。

/spring-1/src/beans-relation.xml:

1 <!-- 抽象bean:bean的abstract属性为true的bean,这样的bean不能被IOC容器实例化,只用来被继承配置 
若某一个bean的class属性没有指定,则该bean必须是一个模板。
--> 2 <bean id="address" class="com.hk.beans.autowire.Address" 3 p:city="Beijing^" p:street="WuDaoKou" abstract="true"></bean> 4 5 <!-- bean配置的继承:使用bean的parent属性,继承哪个配置 --> 6 <bean id="address2" p:city="Beijing" p:street="GuoMao" parent="address"></bean>

运行结果:

 

5.并不是<bean>元素里的所有属性都会被继承。比如:autowire,abstract等。

 

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

1 <bean id="address" p:city="Beijing^" p:street="WuDaoKou" abstract="true"></bean>
2 
3 <!-- bean配置的继承:使用bean的parent属性,继承哪个配置 -->
4 <bean id="address2" class="com.hk.beans.autowire.Address" 
5       p:city="Beijing" p:street="GuoMao" parent="address"></bean>

 

 7.当子Bean没有给属性赋值,就会继承父Bean的属性值。

配置文件:

1 <bean id="address" p:city="Beijing^" p:street="WuDaoKou" abstract="true"></bean>
2 
3 <!-- bean配置的继承:使用bean的parent属性,继承哪个配置 -->
4 <bean id="address2" class="com.hk.beans.autowire.Address" 
5       parent="address"></bean>

运行结果:

 

【依赖Bean配置】

1.Spring允许用户通过depends-on属性设定Bean前置依赖的Bean,前置依赖的Bean会在本Bean实例化之前创建好。

配置文件:

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

运行结果:

 

2.如果前置依赖于多个Bean,则可以通过逗号,空格或的方式配置Bean的名称

 

转载于:https://www.cnblogs.com/zhzcode/p/9610803.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值