1

我对 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 不是一种选择。实现这一目标的最佳方法是什么?谢谢!

4

2 回答 2

1

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

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

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

<property name="propertyThree" value="${aBean.propertyOne}"/>
于 2012-06-13T00:54:00.707 回答
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>
于 2012-06-13T07:41:36.810 回答