0

我在 java se 上使用weld+paxcdi。我可以使用获取对 beanManager 的引用

@Inject
BeanManager beanManager;

但是,很明显,我只能在由 CDI 容器管理的对象中使用这种方式。如何在 new 创建的对象中获取对 beanmanager 的引用?

4

1 回答 1

1

我认为这个问题是指 OSGi,否则使用 Pax CDI 是没有意义的。

Pax CDI 创建一个单独的 CDI 容器,因此每个 bean 包都有一个单独的 bean 管理器。由于这个原因,当前的bean manager 应该是什么并不是很明显。

从 Pax CDI 1.0.0.RC1 开始,如果方法目标是调用类中的注入点,则在CDI.current()从方法调用时返回一个有意义的值。否则未定义。OsgiServiceProviderCDI.current()

Pax CDI 0.x 基于 CDI 1.0,因此不支持CDI.current().

于 2015-05-30T16:02:56.493 回答