2013-10-29 118 views
0

我完全不熟悉CDI。CDI bean配置

我用XML配置bean(Spring)。在CDI中,我應該直接在類中配置它們嗎?我有幾十個具有相同實現但配置不同的bean。

回答

2

是的,配置發生在代碼中。在做基於XML的配置方面有幾次嘗試,尋找Seam配置。

對於數十種豆類,您通常會使用生產者方法來創建具有自己配置的各個實現。 CDI使用限定符,而不是bean標識來標識bean。

3

CDI使用註釋和xml配置混合來配置哪些bean在部署中處於活動狀態。這是一個很大的話題,但我會嘗試總結:

在你的bean的實現,你可以用下面的標準註釋:

@Default 
@Alterative 
@Vetoed 
@Specializes 

@default假設除非沒有其他的註釋存在

@除非你指定,以便替代豆積極性不高META-INF/beans.xml中

@Vetoed豆永遠不會被視爲積極

@Specializes bean將始終優先於其超類。

除了那些你可以創建自己的限定符,以更準確地選擇你想要的bean爲了什麼目的。

您可以創建一個限定爲這樣的註釋:

@Qualifier 
@Retention(RUNTIME) 
@Target({ TYPE, FIELD, PARAMETER, METHOD }) 
public @interface MyQualifier { 
} 

注意@Qualifier和@Retention(RUNTIME)標註。 您也可以將參數添加到您的客戶限定符。

我會推薦給焊接文檔的讀取,它是全面的,很好寫:

Weld manual