Spring中是否有可能引用另一个bean的一部分?

时间:2012-07-04 10:47:08

标签: java spring properties reference javabeans

代码:

<bean id="bean1" ...
 <property name="Utils">
...
</bean>

我想这样做:

<bean id="bean2" ...
 <property name="Utils" ref="bean1.Utils"/>

春天有可能吗?或类似的东西? 感谢。

4 个答案:

答案 0 :(得分:4)

<bean id="bean1" ...>
 <property name="Utils" ref="utilBean">
</bean>


<bean id="utilBean" ...>

<bean id="bean2" ...
 <property name="Utils" ref="utilBean"/>

由于utilBean单身bean1bean2都会为属性Utils提供相同的实例

答案 1 :(得分:1)

您可以使用PropertyPathFactoryBean。见http://static.springsource.org/spring/docs/2.5.x/reference/xsd-config.html#xsd-config-body-schemas-util-property-path

<bean id="bean2" ...
  <property name="Utils">
    <bean id="bean1.Utils"
          class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>

这也可以使用bean1中未设置的属性,只要它有一个getter。

答案 2 :(得分:1)

我很确定 Jigar Joshi answer 就是您所需要的 - 但如果没有,您可以使用SpEL

<bean id="bean2" ...
 <property name="Utils" value="#{bean1.getUtils()}"/>

这假设bean1公开了getUtils()方法。

请注意,这不是正统的,通常不是推荐的做法。

答案 3 :(得分:0)

可以定义为基于xml的;

<bean id="bean1">
 <property name="Utils" ref="bean2">
</bean>

作为基于Java的注释;

@Autowired
Bean2 bean2;