java - 我是否需要显式释放使用 CDI 创建的上下文 JDialog?

标签 java swing dependency-injection inversion-of-control cdi

假设MyDialog扩展了javax.swing.JDialog。考虑这段代码:

MyDialog dialog = CDI.current().select(MyDialog.class).get();
dialog.setVisible(true);
dialog.dispose();

问题:

  • 是否需要用CDI显式释放dialog或者上面的代码已经可以了?如果是的话,我需要调用CDI的哪个类和方法? (考虑一下用户关闭对话框后。我不再需要它了)
  • 根据代码,dialog 位于哪个上下文中?

最佳答案

是的,您应该显式释放该 bean。这很重要,因为否则像 @PreDestroy 这样的东西将无法正常工作。要释放 bean,您可以使用以下代码:

CDI.current().destroy(dialog);

bean 的范围取决于您在 MyDialog 上添加的注释。如果您没有在类上放置任何 CDI 注释,则它将受到 @Dependent 作用域。这意味着每次调用 .select(MyDialog.class).get() 时,您都会获得一个新实例。

关于java - 我是否需要显式释放使用 CDI 创建的上下文 JDialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32417201/

相关文章:

java - AndroidPlot 对数轴?

asp.net - ASP.NET MVC 5 中的 Actionfilter 注入(inject)

java - 如何在我的手机/模拟器中打开PDF查看器(adobe pdf)

java - 我应该如何使用异步通信实现 GET 端点?

java - 如何将 JComboBox 添加到 JTable 中的特定单元格

java - java JFrame 中的 HTML?

java - Dagger 2 不生成子组件实现

c# - 为什么 Unity 调用是链接的?

java - 自定义最小化按钮不调用 MouseLeave 事件

Java图形用户界面布局