spring配置中parent和abstract作用

Spring配置中,`parent`属性用于让一个bean继承父bean的定义,可以省略父类已注入的属性。而`abstract`属性设置为`true`表示bean是一个抽象定义,不能直接实例化,常用于定义共享属性。例如,通过创建一个抽象bean,指定`abstract="true"`并设置公共属性,然后在具体bean中通过`parent`引用,实现属性复用。

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

关于spring中的bean定义,parent属性是什么意思? 
1.
<bean id="txProxyTemplate" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionAttributes">
<props>
<prop key="create*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>


2.
<bean id="carnetMgr" parent="txProxyTemplate">
<1property name="target">
<bean class="ecustoms.carnet.app.biz.CarnetMgr">
<property name="extensionHistoryDAO" ref="extensionHistoryDAO"/>
<property name="stockTransactionDAO" ref="stockTransactionDAO"/>
<property name="carnetDAO" ref="carnetDAO"/>
             </bean>
</property>
</bean>

表示继承的父类
如果有很多继承同一个父类的BEAN
那么在配置文件中实例那些BEAN时候可以省略掉父类已经注入的属性

bean定义继承父bean定义,它可以覆盖父bean的一些值,或者它需要的值。

那么在配置文件中实例那些BEAN时候可以省略掉父类已经注入的属性


如何将公共的注入定义描述出来?

* 通过<bean>标签定义公共的属性,指定abstract=true

* 具有相同属性的类在<bean>标签中指定其parent属性

例如:一个对象有三个属性分别为:id、name、password,另一个对象有四个属性为id、name、loginpass

例子代码:

Bean1.java

public class Bean1 { 
    private int id;   
    private String name; 
    private String password;

Bean2.java

public class Bean2 { 
    private int id;   
    private String name; 
    private String loginpass;

applicationContext.xml:

   <bean id="beanAbstract" abstract="true">
        <property name="id" value="1"/>
        <property name="name" value="Jack"/>
   </bean>            
   <bean id="bean3" class="spring.Bean1" parent="beanAbstract">
        <!-- 可以覆盖父类赋予的值 -->
        <property name="name" value="Tom"/>
        <property name="password" value="123"/>
   </bean>
   <bean id="bean4" class="spring.Bean2" parent="beanAbstract">
        <property name="loginpass" value="123"/>
   </bean>

 

转自:https://blog.youkuaiyun.com/lushuaiyin/article/details/7439816


bean使用abstract=true时,可以有class,也可以没有class


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值