我对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不是一个选项。实现这一目标的最佳方法是什么?谢谢!
答案 0 :(得分:1)
我能想到的唯一方法就是为你的公共属性创建一个bean并在Bean
和AnotherBean
中引用这个公共属性 - 这就是为什么这不是你的选择?
任何其他方式都行不通,因为依赖图 - 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>