我想在关闭 CDI 应用程序时对 bean 进行一些清理。例如,我想关闭一个IO连接。当然,这里的bean被标记为@ApplicationScoped。
为了管理这个问题,我编写了一个扩展并观察 BeforeShutdown 事件,然后选择我的 bean 来调用清理方法:
public void beforeShutdown(@Observes BeforeShutdown beforeShutdown) {
SomeBean obj = CDI.current().select(SomeBean.class).get();
obj.cleanup();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我可以在此方法中访问新实例。不是我在整个应用程序中得到的实例。
如果您想查看此实例问题,我在 github 上创建了一个存储库来展示它: https: //github.com/hasalex/cdi-extension-demo。
所以我有两个问题: