用 CDI 注入所有相同类型的豆子



假设我们有一个包含类的包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 节.编程查找

最新更新