2012-06-06 46 views
2

我有一個生成器方法,可以創建實例 - 讓我們來說說 - Person如果我的對象是由生產者方法生成的,它的初始化方法會自動調用嗎?

此方法創建的實例類型爲PersonBean,很明顯實現了Person

這個類有一個初始化方法吧:

@Inject 
public void setSomething(final Something something) { 
    // whatever 
} 

還有一個Something實現在一個Bean存檔,應該是注射這裏的候選類路徑。

我觀察到該實施方式中被注入到另一非生產者方法生產的物體的適當註釋的字段,所以我知道焊縫是找到它,這是有效的,等等,等等

的規範是不清楚(對我來說)我的生產者方法的返回值是否將已應用Weld /容器提供的依賴項注入。

我當然注意到這個初始化方法沒有自動調用。我的問題是:如果我正在製作一個對象,那麼這是否意味着我的製作方法必須處理全部該對象的初始化,或者(我期望的)是我的製作方法只有負責實例化?

回答

3

如果我生產的對象,那麼這是否意味着我的製作方法 必須採取對象或全部初始化(我倒是希望 代替)的服務是我的製作方法只負責 實例?

From the spec:

3.3. Producer methods 
    A producer method acts as a source of objects to be injected, where: 
    - the objects to be injected are not required to be instances of beans, 

這應該回答你的問題:如果你是實例一個新的對象(使用new),你將不得不採取的初始化工作。

(A可能是生產方式比較常見的用例是配置併產生現有豆到一定範圍內......)

+0

我相信你;我不確定爲什麼該規範應該回答我的問題。也許一個生產者方法(這是我想要弄清楚的)負責初始化實例化,然後可能它的返回值通過CDI DI機制的其餘部分。 如果我正確地讀了你的話,你是說在生產者方法中將實例作爲'@ New'傳遞(在我的情況下),然後混淆它的內部可能會更好? –

相關問題