我们假设我有一个汽车课.在我的代码中,我要创建10辆车. Car类有一些@Inject注释的依赖项.这样做最好的办法是什么?
CDI有一个提供者界面,可以用来创建汽车:
@Inject Provider<Car> carProvider; public void businessMethod(){ Car car = carProvider.get(); }
不幸的是,如果我没有CarFactory有一个方法与@Produces注释创建汽车不工作.尽管反映出无法在没有工厂制造汽车的现实世界,我宁可不为任何一个人写工厂.我只想要CDI容器像任何其他bean一样创建我的车.你怎么推荐我创造这些汽车?
解决方法
只需使用javax.enterprise.inject.Instance接口.
喜欢这个:
public class Bean { private Instance<Car> carInstances; @Inject Bean(@Any Instance<Car> carInstances){ this.carInstances = carInstances; } public void use(){ Car newCar = carInstances.get(); // Do stuff with car ... } }