【发布时间】:2016-08-10 10:56:57
【问题描述】:
有一个bundle A,并且在bundle A中有一个类MyClass。我们假设pax-cdi+weld是开启的。
我能否在不使用 @Inject 和其他 CDI 注释的情况下获得对 MyClass 中包 A 的 BeanManager 的引用?通过osgi服务?或者怎么做?
【问题讨论】:
有一个bundle A,并且在bundle A中有一个类MyClass。我们假设pax-cdi+weld是开启的。
我能否在不使用 @Inject 和其他 CDI 注释的情况下获得对 MyClass 中包 A 的 BeanManager 的引用?通过osgi服务?或者怎么做?
【问题讨论】:
您可以查找CdiContainer OSGi 服务并调用getBeanManager()。
使用最新版本的 Pax CDI CDI.current().getBeanManager() 应该也能正常工作。
话虽如此,Pax CDI 的整个想法是让 CDI 在 OSGi 中像在 Java EE 中一样工作。访问 BeanManager 有点设计味道,除非您正在开发 CDI 扩展。
【讨论】: