假设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/