Eng*_*_DJ 5 java spring apache-zookeeper apache-curator
如何彻底关闭ApplicationContextInitializer实施中使用的资源?
我创建了一个ApplicationContextInitializer使用 Curator 项目连接到 Zookeeper 并获取属性文件的实现。然后它创建一个Properties实例 aPropertiesPropertySource并将其添加到上下文中。
当应用程序关闭时,我希望能够调用属于我的初始化程序成员的实例close()。CuratorFramework如何最好地做到这一点?
我是否也可以将CuratorFramework实例传递到上下文中,以便我可以将其用作 bean?
在您的 中ApplicationContextInitializer,您可以添加ApplicationListener<ContextClosedEvent>:
class MyContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
applicationContext.addApplicationListener(new ApplicationListener<ContextClosedEvent>() {
@Override
public void onApplicationEvent(ContextClosedEvent event) {
/* Cleanup code */
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
我将创建一个获取春季事件的 bean,并用它来关闭 curator,
public class CuratorDisposer implements DisposableBean {
private CuratorFramework delegate; //set through spring somehow
public void destroy() {
delegate.close();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
952 次 |
| 最近记录: |