假设我们有一个包含类的包foos
,它们都实现了某种IFoo
。
我们还有一个类,Baz
其中包含一个数据成员List<IFoo> fooList
。是否可以将所有这些IFoo
类动态注入到fooList
中?
顺便问一下,这是一种常见的做法吗?(我是DI概念的新手(
使用 javax.enterprise.inject.Instance
接口动态获取 Foo
的所有实例:
import javax.annotation.PostConstruct;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;
public class Baz {
@Inject
Instance<Foo> foos;
@PostConstruct
void init() {
for (Foo foo : foos) {
// ...
}
}
}
这完全是有道理的,例如,如果您想合并多个服务提供商实现的结果。你可以在这里找到一个很好的学习例子。
另请参阅:
- JSR-000346 JavaTM EE 1.2 的上下文和依赖注入,
第 5.6 节.编程查找