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

sud*_*kya 3 java cdi java-ee-7

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

MyBean bean = CDI.current().select(MyBean.class, qualifier).get();
Run Code Online (Sandbox Code Playgroud)

完成后,我是否需要使用销毁这个bean

CDI.current().destroy (bean);
Run Code Online (Sandbox Code Playgroud)

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

Sil*_*rus 5

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

绝对不是。它将具有您赋予的任何范围MyBean

我需要销毁这个豆子吗

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

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