我希望能够通过引用将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的新手,所以如果这是一个错误的构思问题,我很抱歉。
答案 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>