使用CDI注入相同类型的所有bean

时间:2016-02-13 16:17:23

标签: java-ee interface cdi managed-bean multiple-instances

假设我们有一个包含foos的包,所有这些类都实现了一些IFoo

我们还有一个类Baz,其中包含数据成员List<IFoo> fooList。 是否可以将所有IFoo类动态注入fooList

顺便说一下,这是一种常见的做法吗? (我是DI概念的新成员)

1 个答案:

答案 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

另见:

相关问题