2011-03-24 108 views
2

假設我有兩個類Circle和Rectangle來實現一個稱爲Shape的接口。
和我有下面的類:彈簧自動佈線

public class ObjectFactory { 
    @Autowired 
    @Qualifier("circle") 
    Shape shape; 
....... 
....... 
....... 
} 

什麼我想要做的是去除@Qualifier,使自動裝配依賴於某些條件(例如,如果條件爲真,則注入圈,如果條件假,注入矩形)或使佈線取決於命名約定。
有沒有辦法做到這一點?

讓我解釋一下,如果我刪除了@Qualifier註解,我要去有以下例外

org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No unique bean of type [com.app.objects.Shape] is defined: 
expected single matching bean but found 2: [circle, rectangle] 

落得有沒有一種方法以編程方式處理該異常,以便有依賴的條件自動佈線?

+0

您想在哪裏指定這些條件? – skaffman 2011-03-24 15:35:48

+0

@skaffman:我希望他們被指定在一個單獨的類,將處理所有的自動佈線衝突。 – Mehdi 2011-03-24 15:57:16

回答

1

您可以在@Resource中使用SpEL,或許您也可以在@Qualifier中使用它。

但通常這樣的邏輯可以放在FactoryBean中,在那裏你可以決定返回哪個實例。

+0

謝謝你,我會檢查這一點,並保持張貼。 – Mehdi 2011-03-24 15:47:38