2010-11-25 58 views
0

有兩臺bean定義:春:定義bean的屬性(裁判其他的bean)作爲可選

文件A.XML

<bean id="A" class="com.A"> 
<property name="bClass" ref="B"/> 
</bean> 

文件B.XML

<bean id="B" class="com.B"/> 

在某些情況下,文件b.xml不包含bean B的定義。
而從另一方面來說,文件a.xml始終包含指向B定義的鏈接。

如何定義參考到B bean是可選,爲了避免org.springframework.beans.factory.NoSuchBeanDefinitionException

回答

0

@Autowired(所需= FALSE)幫助

+0

怎麼來的?你不要在你的設置中使用`@ autowired`。那麼註釋是如何應用的? – 2010-11-29 17:11:37

2

你不能。如果您有參考B,則B必須存在。您需要確保存在某種存根B,其定義將被b.xmlB的定義覆蓋。

另外,不注射BA,但要A使用BeanFactory.getBean("B")查找B,並處理潛在缺乏B編程。

1

另一種可能性(最重要的是由skaffman提出)是顛倒依賴性。讓豆B知道豆A。它甚至可以在它自己註冊 - 也就是所說的二傳手,例如:

public class B { 
    private A a; 

    public void init() { 
    a.setB(this); 
    } 
}