构造函数注入由另一个bean提供的值

时间:2011-04-04 21:25:27

标签: spring

我想将值传递给构造函数(类型字符串),其值由另一个bean提供。

Class BeanOne(){ BeanOne(String message){ ... } }

以下声明可以使用

<bean id="beanOne"
    class="com.abc.BeanOne">
    <constructor-arg index="0" type="java.lang.String"
        value="Hi There" /> // instead of value="Hi There", i want to use bean property (value="someBean.message")
</bean>

但是我想要另一个bean(比如BeanTwo)为BeanOne的message属性设置值。我尝试了下面给出的嵌套属性,但它不起作用。此消息属性也不能直接在类和&amp;中看到。由另一个构造函数和内部引用。然后通过该方法,所以我不能使用属性注入&amp;必须只使用构造函数注入

             

    

1 个答案:

答案 0 :(得分:4)

您可以使用MethodInvokingFactoryBean获取字符串值,然后将其注入您的bean。

         <bean id="message" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
            <property name="targetObject"><ref local="someBean"></property>
            <property name="targetMethod"><value>getMessage</value></property>
         </bean>

         <bean id="beanOne"  class="com.abc.BeanOne">
            <constructor-arg index="0" type="java.lang.String" ref="message"/>
         </bean>