假设我们有一个包含foos
的包,所有这些类都实现了一些IFoo
。
我们还有一个类Baz
,其中包含数据成员List<IFoo> fooList
。
是否可以将所有IFoo
类动态注入fooList
?
答案 0 :(得分:9)
使用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) {
// ...
}
}
}
这完全有道理,例如如果要合并多个服务提供者实现的结果。你找到了一个很好的学习例子here。
另见: