为什么“实例”从不迭代任何实现?我错过了什么?
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/