2013-01-23 83 views
0

生產者方法對於以編程方式創建實例並在上下文中發佈它們非常有用。問題在於由CDI創建的new創建並由生產者方法返回的實例的所有屬性都未注入。在Weld文檔中,我讀過這是一種有意的行爲,但在許多情況下,在這些bean中注入將會非常有用。啓用CDI注入由生產者方法創建的bean

是否有一種解決方法來啓用注入此類bean?

回答

1

首先,我不禁要問,爲什麼你要使用生產者的bean,無論如何需要注射。

除此之外,您需要從BeanManager創建一個新實例。看看https://github.com/apache/incubator-deltaspike/blob/master/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanProvider.java#L115的一些想法(您可以簡單地將BeanManager作爲參數注入Producer方法並執行相同的代碼)。

+0

親愛的LightGuard,謝謝你的回覆。我會在這個方向進行調查。要回答關於使用需要注入的生成器創建bean的問題,假設桌面(即swing)應用程序的框架想要公開用於創建視圖的方法。讓客戶創建這些視圖的最好方法是提供工廠界面。現在我的框架可以使用這些工廠創建視圖,但這些視圖不能使用DI。所以我的想法是讓製作人員將這些觀點暴露給CDI,讓它來管理依賴注入。我認爲這種行爲可能很有用...... – jactor

+0

這就是BeanProvider創建的情況。 – LightGuard

+0

要將CDI bean注入到使用'new'創建的實例中,請使用BeanProvider#injectFields –