是否有可能部分注入或覆盖spring bean属性(在mule中)

时间:2013-01-23 16:44:09

标签: spring mule

我需要在我的骡子流中的两个地方使用一个春豆。 Bean有3个属性,其中1个是另一个bean。是否可以在单个位置定义主bean并仅覆盖已更改的属性。说这是我的bean声明:

<custom-transformer name="soapFaultTransformer" class="com.xxx.xx.transformer.VelocityMessageTransformer">
<spring:property name="velocityEngine"  ref="velocityEngine" />
<spring:property name="templateName"    value="soapFault.vm" />
<spring:property name="beanClass">
    <spring:bean class="com.xxx.services.xx.Soap11Fault">
            <spring:property name="faultCode"   value="Client" />
            <spring:property name="faultString" value="Invalid Request" />
            <spring:property name="detail"      value="This request is not valid" />
    </spring:bean>
</spring:property>

我只想更改以下2个属性:

 <spring:property name="faultString" value="Invalid Request" />
 <spring:property name="detail"      value="This request is not valid" />

有可能吗?

谢谢

1 个答案:

答案 0 :(得分:1)

最好的方法是声明一个全局抽象父bean,使用公共属性配置,然后在需要的地方引用它,将特定属性设置为所需的值。

以下是SOAP错误的抽象bean的声明:

<spring:beans>
    <spring:bean name="abstractSoap11Fault" abstract="true"
        class="com.xxx.services.xx.Soap11Fault">
        <spring:property name="faultCode" value="Client" />
    </spring:bean>
</spring:beans>

当我们将其用作父bean时,我们使用其特定值指定其他属性:

<custom-transformer name="soapFaultTransformer"
    class="com.xxx.xx.transformer.VelocityMessageTransformer">
    <spring:property name="velocityEngine" ref="velocityEngine" />
    <spring:property name="templateName" value="soapFault.vm" />
    <spring:property name="beanClass">
        <spring:bean parent="abstractSoap11Fault">
            <spring:property name="faultString" value="Invalid Request" />
            <spring:property name="detail"
                value="This request is not valid" />
        </spring:bean>
    </spring:property>
</custom-transformer>