2

我希望能够通过引用将 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

4 回答 4

2

您可以使用 Spring-EL -

<bean id="specialName" class="my.SpecialBean"/>
<bean id="referenceBean" class="my.ReferenceBean">
    <property name="refId" value="#{specialName.name}"/>
</bean>
于 2012-07-02T20:27:49.333 回答
2

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

<bean id="specialName" class="my.SpecialBean"/>
<bean id="referenceBean" class="my.ReferenceBean">
    <property name="refId" value="specialName"/>
</bean>
于 2012-07-03T07:20:24.887 回答
0

关于什么:

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

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

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

于 2012-07-02T20:22:13.177 回答
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>
于 2017-06-07T14:38:41.450 回答