java - CDI @Inject Instance @Any - 但实例从未填充实例

标签 java jboss7.x cdi

为什么“实例”从不迭代任何实现?我错过了什么?

JBoss EAP 6.3.0.GA(AS 7.4.0.Final-redhat-19)

public interface Simple { }
public class SimpleA implements Simple { public SimpleA() { } }
public class SimpleB implements Simple { public SimpleB() { } }
public class SimpleUser {
    @Inject @Any Instance<Simple> instance;

    @PostConstruct public void init() {
        for (final Simple simple : instance) {
            System.out.println(simple);
        }
    }
}

最佳答案

如果它对其他人有帮助,我也在使用 Deltaspike 1.5.2 并且遇到了同样的问题(如果我删除 Deltaspike,我就不再遇到问题)。

就我而言,添加生产者方法并没有解决问题。环顾四周后,我的 BeanProvider 解决了这个问题,但远非优雅。

https://deltaspike.apache.org/documentation/core.html#BeanProvider

我必须打电话

List<MyServiceInterface> myServiceList = BeanProvider.getContextualReferences(MyServiceInterface.class, false, false);

可能有更好的方法。我注意到 Deltaspike 默认情况下会打开一堆扩展程序,但找不到有关如何禁用我未使用的扩展程序的文档,因为我怀疑可能是其中一个扩展程序导致了此问题。

关于java - CDI @Inject Instance @Any - 但实例从未填充实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31121822/

相关文章:

java - 将数组转换为 ArrayList 的通用方法

java - 保存后如何将 MongoDB 集合加载到 Java 程序数据结构上?

java - 春假服务

java - 如何测量JBOSS 7服务器的启动时间?

ejb - JBoss7 的 ejb-jar.xml 中的消息驱动目标

java - 从其他包访问非公共(public)类

java - JBoss AS 7.1.1 Final 和 Log4j

java - 无法在 Glassfish 4.0 中执行 CDI

java - 使用 CDI 在 Java EE 应用程序中获取对 EntityManager 的引用

java - @Singleton 对象上的 CDI @New。它能做什么?