使用 CDI 注入所有相同类型的 beans
Injecting all beans of the same type with CDI
假设我们有一个包含 classes 的包 foos
,它们都实现了一些 IFoo
.
我们还有一个 class,Baz
其中包含一个数据成员 List<IFoo> fooList
。
是否可以将所有这些 IFoo
class 动态注入到 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) {
// ...
}
}
}
这完全有道理,例如如果你想合并多个服务提供者实现的结果。你找个学习的好例子here.
另请参阅:
假设我们有一个包含 classes 的包 foos
,它们都实现了一些 IFoo
.
我们还有一个 class,Baz
其中包含一个数据成员 List<IFoo> fooList
。
是否可以将所有这些 IFoo
class 动态注入到 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) {
// ...
}
}
}
这完全有道理,例如如果你想合并多个服务提供者实现的结果。你找个学习的好例子here.
另请参阅: