我们是否需要销毁以编程方式获得的 CDI bean?

Do we need to destroy a CDI bean obtained programmatically?

我获得了一个 CDI bean,它是使用以下代码以编程方式获得的:

MyBean bean = CDI.current().select(MyBean.class, qualifier).get();

完成后,是否需要使用

销毁此 bean
CDI.current().destroy (bean);

或者 bean 是否继承了我的范围 class?

Or does the bean inherit the scope from my class?

绝对不会。它将具有您给 MyBean.

的任何范围

do I need to destroy this bean

如果您的 bean 是正常范围的,则不需要这样做。但是,如果它是所谓的伪作用域,您可能需要销毁它。 作为记录,正常作用域是所有基本 CDI 作用域 除了 @Dependent.

原因是 @Dependent 生命周期(以及销毁)绑定到您注入它的 bean。但是您并没有真正注入它,而是进行了编程查找。因此,它没有绑定到任何其他 bean,您应该销毁它。