2012-11-02 170 views
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接口,以便它將視爲容器或上下文?

回答

0

您應該bean1.member創建一個單獨的bean,注入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的是不可修改的,沒有二傳,這通常是我們做什麼。