我想要一个类型为 com.a.A 的bean,它有几个可寻址的属性 com.a.B 。
<bean id="myCompound" class="com.a.A">
<property name="first">
<bean class="com.a.B"/> <!-- Anything else needed here? -->
</property>
<property name="second">
<bean class="com.a.B"/> <!-- Anything else needed here? -->
</property>
在可寻址中,我的意思是,我希望能够从另一个bean中引用这些嵌套bean中的任何一个:
<bean id="myCollaborator" class="com.a.C">
<property name="target" ref="myCompound.first"/>
</bean>
这个结构不起作用,在我看来Spring并没有解析&lt; ref&gt;中的复合属性。元素。是这样吗?有人可以想办法解决这个问题吗?
答案 0 :(得分:3)
如果我正确理解您的问题,那么Spring 3.0的EL支持可以提供您正在寻找的内容:
<bean id='one' class = 'a.b.C.One' >
<property name='property1' value ='43433' />
</bean>
<bean class = 'a.b.c.Two'>
<property name = 'property2' value = "#{ one.property1 }"/>
</bean>
当然,在Java风格的配置中,这是微不足道的
@Configuration
public class MyConfiguration {
@Bean
public One one(){
One o = new One();
o.setProperty1(24324);
return o;
}
@Bean
public Two two (){
Two t =new Two();
t.setProperty2( one().getProperty1());
return t;
}
}
答案 1 :(得分:0)
这是一个简单的解决方法。
<bean id="firstB" class="com.a.B"/>
<bean id="secondB" class="com.a.B"/>
<bean id="myCompound" class="com.a.A">
<property name="first" ref="firstB"/>
<property name="second" ref="secondB"/>
</bean>
<bean id="myCollaborator" class="com.a.C">
<property name="target" ref="firstB"/>
</bean>