我们是否需要销毁以编程方式获得的 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,您应该销毁它。
我获得了一个 CDI bean,它是使用以下代码以编程方式获得的:
MyBean bean = CDI.current().select(MyBean.class, qualifier).get();
完成后,是否需要使用
销毁此 beanCDI.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,您应该销毁它。