2

I want to be able to pass a bean ID into another bean by reference. So if I have this:

<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
}

The reason I need this, it that ReferenceBean is actually a route builder in Camel and it directs messages to SpecialBean through the Spring Registry. I'm new to Spring and Camel, so if this is an ill conceived questions, my apologies.

4

4 に答える 4

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 に答える
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 に答える
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 に答える