假設我有一個Car類。在我的代碼中,我想創建10輛汽車。 Car類有一些@Inject註釋的依賴關係。什麼是最好的方法來做到這一點?如何在CDI上實時創建實例
CDI有,我可以用它來創建一個汽車提供者接口:
@Inject Provider<Car> carProvider;
public void businessMethod(){
Car car = carProvider.get();
}
不幸的是,不工作,如果我沒有說有@Produces註釋的方法,它創建了一個CarFactory汽車。儘管它反映了現實世界中我無法在沒有工廠的情況下創造汽車,但我寧願不寫任何事情的工廠。我只想讓CDI容器像其他任何bean一樣創建我的汽車。你如何建議我製作這些汽車?
這實際上是我最終使用的。你能否修正你的例子,構造函數參數與類屬性不是同一類型:Car vs UIModule。 另外我認爲注射應該是@New而不是@Any的annotetade。對於use()方法來說,一個更好的例子就是顯示你如何得到Car的一個實例。例如'carInstances.get()' – palto 2015-01-08 13:11:03
@New在CDI 1.1中被棄用,優先於@Dependent bean。參見CDI 1.1,第3.14節。我不明白使用提供者有什麼問題,我。即CDI.current()。select(Car.class).get()'? – 2015-01-26 16:13:43
@MartinAndersson最初的問題是我必須創建一個使用提供者的工廠。你在評論中提供的例子對我來說是全新的。也許你可以從中創建一個答案? – palto 2015-01-27 07:17:53