7.8.1: 使用抽象Bean

Spring框架绝大部分工作都集中在 对容器中Bean的管理 上,包括管理容器中Bean的生命周期,使用Bean继承等特殊功能。通过这些深入的管理,应用程序可以更好地使用这些Java组件。

所有 抽象Bean,都是指定abstract属性为true的Bean,抽象Bean不能被实例化,Spring容器不会创建抽象Bean的实例。抽象Bean的价值在于被继承,抽象Bean通常作为父Bean被继承。

当某个Bean将作为其他Bean的模板使用时,该Bean通常不需要实例化,而ApplicationContext默认预初始化所有的singleton Bean。为了阻止Bean模板被预初始化,可以指定abstract=“true”将该模板Bean设置为抽象Bean,Spring容器会忽略所有的抽象Bean定义,预初始化时不初始化抽象Bean。

<bean id="chineseTemplate" class="com.bean.Chinese" abstract="true">
   <property name="axe" ref="steelAxe"/>
</bean>
<bean id="steelAxe" class="com.bean.SteelAxe"/>
这样配置以后,当程序采用ApplicationContext作为Spring容器时,程序实例化ApplicationContext容器时会默认实例化所有的singleton Bean,但不会初始化abstract  Bean。

抽象Bean是一个模板,容器会忽略抽象Bean的定义,不会实例化抽象Bean。抽象Bean因为无须实例化,因此可以没有class属性。

<bean id="chineseTemplate" abstract="true">
   <property name="axe" ref="steelAxe"/>
</bean>
<bean id="steelAxe" class="com.bean.SteelAxe"/>

抽象Bean不能实例化,因此既不能通过getBean显式地获得抽象Bean实例,也不能将抽象Bean注入成其他Bean的依赖属性。无论何时,只要企图实例化抽象Bean,都将导致错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值