配置Spring Bean重用自己的属性?

时间:2012-06-13 00:03:35

标签: java spring

我对Spring很新,我需要一个有两个属性的bean - 第二个是引用第一个属性的内联bean。像这样:

<bean id="aBean" class="com.sample.Bean">
    <property name="propertyOne" value="something" />
    <property name="propertyTwo">
        <bean class="com.sample.AnotherBean">
            <property name="propertyThree" ref="propertyOne />
        </bean>
    </property>
</bean>

使propertyOne自己的bean不是一个选项。实现这一目标的最佳方法是什么?谢谢!

2 个答案:

答案 0 :(得分:1)

我能想到的唯一方法就是为你的公共属性创建一个bean并在BeanAnotherBean中引用这个公共属性 - 这就是为什么这不是你的选择?

任何其他方式都行不通,因为依赖图 - aBean依赖于另一个Bean,因此AnotherBean将在aBean之前实例化,并且无法引用子bean属性

如果没有这种依赖关系,你可以使用Spring-EL来引用属性:

<property name="propertyThree" value="${aBean.propertyOne}"/>

答案 1 :(得分:1)

您可以将“propertyOne”创建为单独的bean。

并从aBean和你的内联bean中引用它。

<bean id="propertyOne" class="java.lang.String">
    <constructor-arg><value>"blabla"</value></constructor-arg>
</bean>

<bean id="aBean" class="com.test.SimpleBean">
<property name="name" ref="firstProperty" />
<property name="newBean">
    <bean class="com.test.OtherSimplwBean">
        <property name="otherName" ref="propertyOne" />
    </bean>
</property>

相关问题