2014-10-03 78 views
0

我想介绍CDI到现有项目。目前,我们正在像在CDI中注入新的对象for循环(焊接)

Context context; 
for(String string: listofstrings){ 
context = new Context(); 
// do some operations with string. 
// set outcomes of above operation in context. 
} 

内创建新对象的for循环现在,如果我注射语境作为

@Inject Context context; 

我每次都得到相同的实例。

我想知道是否有任何方式可用CDI在循环内创建新的上下文?

+0

为什么你需要那个?您正试图滥用依赖注入机制。 – 2014-10-03 19:35:44

+0

嗨艾德里安,你认为这将是一种设计方法。虽然它是一个用例要求,但在选择它之前,我一定会想看看它是否是一种反模式?谢谢拉曼 – Raman 2014-10-04 19:34:08

回答

2

只要你不使用特殊的范围,你可以使用

@Inject 
Instance<B> bProvider; 

... 
B b = bProvider.get(); 

,你会得到一个新的“B”每次。检出this gist

+0

为了澄清,'B'必须注释为'@ Dependent'或根本没有在EE 6/7中注解(7中的所有bean发现) – 2014-10-04 13:37:01