PAX-CDI:如何在不使用 CDI 的情况下获取对 BeanManager 的引用

PAX-CDI: how to get reference to BeanManager in bundle without using CDI

有一个 bundle A 并且 bundle A 中有一个 class MyClass。我们假设 pax-cdi+weld 开启。

我可以在不使用@Inject 和其他CDI 注释的情况下获取对MyClass 中bundle A 的BeanManager 的引用吗?通过 osgi 服务?或者如何?

您可以查找 CdiContainer OSGi 服务并调用 getBeanManager()

使用最新版本的 Pax CDI CDI.current().getBeanManager() 应该也能正常工作。

话虽如此,Pax CDI 的整个想法是让 CDI 在 OSGi 中工作,就像在 Java EE 中一样。访问 BeanManager 有点设计味道,除非您正在开发 CDI 扩展。