【发布时间】:2017-12-30 21:01:14
【问题描述】:
我已经获得了一个 CDI bean,它是使用以下代码以编程方式获得的:
MyBean bean = CDI.current().select(MyBean.class, qualifier).get();
完成后,我是否需要使用
销毁这个 beanCDI.current().destroy (bean);
或者 bean 是否从我的类继承范围?
【问题讨论】:
我已经获得了一个 CDI bean,它是使用以下代码以编程方式获得的:
MyBean bean = CDI.current().select(MyBean.class, qualifier).get();
完成后,我是否需要使用
销毁这个 beanCDI.current().destroy (bean);
或者 bean 是否从我的类继承范围?
【问题讨论】:
或者 bean 是否从我的类继承范围?
绝对没有。它将具有您提供给 MyBean 的任何范围。
我需要销毁这个 bean
如果您的 bean 是正常作用域的,则不需要这样做。但是,如果它是所谓的伪作用域,您可能需要销毁它。
作为记录,普通范围是所有基本 CDI 范围除了@Dependent。
原因是@Dependent 生命周期(也是destroy)绑定到注入它的bean。但是您并没有真正注入它,而是进行了程序化查找。因此,它没有绑定到任何其他 bean,您应该销毁它。
【讨论】: