【问题标题】:Do we need to destroy a CDI bean obtained programmatically?我们是否需要销毁以编程方式获得的 CDI bean?
【发布时间】:2017-12-30 21:01:14
【问题描述】:

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

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

完成后,我是否需要使用

销毁这个 bean
CDI.current().destroy (bean);

或者 bean 是否从我的类继承范围?

【问题讨论】:

    标签: java cdi java-ee-7


    【解决方案1】:

    或者 bean 是否从我的类继承范围?

    绝对没有。它将具有您提供给 MyBean 的任何范围。

    我需要销毁这个 bean

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

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

    【讨论】:

    • 谢谢。这很有帮助。
    猜你喜欢
    • 2011-09-21
    • 2019-05-19
    • 2015-10-28
    • 1970-01-01
    • 2015-03-11
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    相关资源
    最近更新 更多