如何将Spring bean id注入另一个Spring配置Bean?

时间:2012-07-02 20:19:05

标签: java spring apache-camel

我希望能够通过引用将bean ID传递给另一个bean。如果我有这个:

<bean id="specialName" class="my.SpecialBean"/>
<bean id="referenceBean" class="my.ReferenceBean">
    <property name="refId" value="<specialName.name>"/>
</bean>

public class ReferenceBean {

    // The spring injected value of this should be 'specialName'        
    public String refId;

    // getter & setter for refId
}

我需要它的原因是,ReferenceBean实际上是Camel中的路由构建器,它通过Spring Registry将消息定向到SpecialBean。我是Spring和Camel的新手,所以如果这是一个错误的构思问题,我很抱歉。

4 个答案:

答案 0 :(得分:2)

您可以使用Spring-EL -

<bean id="specialName" class="my.SpecialBean"/>
<bean id="referenceBean" class="my.ReferenceBean">
    <property name="refId" value="#{specialName.name}"/>
</bean>

答案 1 :(得分:2)

为什么不把id静态地放入refId呢?它以后不会改变,所以你为什么要在这里做一些复杂的事情?

<bean id="specialName" class="my.SpecialBean"/>
<bean id="referenceBean" class="my.ReferenceBean">
    <property name="refId" value="specialName"/>
</bean>

答案 2 :(得分:0)

怎么样:

<bean id="specialName" class="my.SpecialBean" />
<bean id="referenceBean" class="my.ReferenceBean">
    <property name="refId" ref="specialName" />
</bean>

这样就应该注入你的bean(假设你改变了my.SpecialBean中的String属性。

然后你可以得到你想要的任何属性。

答案 3 :(得分:0)

您可以使用idref元素(请参阅Spring XML Beans Schema):

<bean id="specialName" class="my.SpecialBean"/>
<bean id="referenceBean" class="my.ReferenceBean">
    <property name="refId">
        <idref bean="specialName"/>
    </property>
</bean>