1

假设我有自己的 bean,其中包含另一个硬编码的 bean。

如何将它与 Spring 配置结合起来?

第一种方法是使用工厂方法:

<bean id="bean1" class="myClass1"/>
<bean id="bean1.member" factory-bean="bean1" factory-method="getMember"/>
<bean id="bean2" class="myClass2">
   <property name="collaborator" ref="bean1.member"/>
</bean>

另一种方法是使用EL:

<bean id="bean1" class="myClass1"/>
<bean id="bean2" class="myClass2">
   <property name="collaborator" value="#{bean1.member}"/>
</bean>

在后一种情况下,Spring 没有实现依赖。无论如何,Eclipse 中的 Bean Graph 显示不相关的 bean。

有没有更好的方法?可能我可以实现一些接口,MyClass1以便将其视为容器或上下文?

4

1 回答 1

0

您应该为它创建一个单独的beanbean1.member并将其注入bean1

<bean id="bean3previouslyMember" class="myCompoundBean"/>

<bean id="bean1" class="myClass1">
   <property name="member" ref="bean3previouslyMember"/>
</bean>
<bean id="bean2" class="myClass2">
   <property name="collaborator" ref="bean3previouslyMember"/>
</bean>

除非 myClass1 不可修改且没有 setter,否则这通常是我们所做的。

于 2012-11-04T12:24:18.337 回答