通过ApplicationListener保存缓存数据
程序员文章站
2022-03-07 09:06:36
...
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext
ctx.registerShutdownHook();
ctx.addApplicationListener(new ApplicationListener<ContextClosedEvent>() {
@Override
public void onApplicationEvent(ContextClosedEvent event) {
ServerTask task = (ServerTask) ctx.getBean("serverTask");
task.exit();
logger.error("系统关闭成功");
}
});
一开始使用destroy方法想通过这个来监听jvm 关闭事件,但是destroy方法之间是没有优先级的,所以无法处理。
通过这种监听ContextClosedEvent事件来保存缓存中的数据
这种方法只对于kill -15 方式结束进程有效,kill -9就别想了。
当然对于保存缓存数据最好通过其他方式,避免误操作。例如轮训配置文件等等。。。
上一篇: PHP如何判断中文还是英文?
下一篇: php删除按钮怎么实现
推荐阅读
-
通过缓存数据库结果提高PHP性能的原理介绍
-
linux系统中 redis 保存数据的5种形式 linux后端模式启动 jedis无法通过IP地址和端口号访问如何修改linux防火墙
-
vue项目优化之通过keep-alive数据缓存的方法
-
通过HttpClient发起Get请求,获取Json数据,然后转为java数据,然后批量保存数据库;
-
Android通过ViewModel保存数据实现多页面的数据共享功能
-
通过缓存数据库结果提高PHP性能(4)_PHP教程
-
通过缓存数据库结果提高PHP性能
-
通过缓存数据库结果提高PHP性能(3)_PHP教程
-
通过缓存数据库结果提高PHP性能的原理介绍_PHP
-
求thinkphp数据缓存、静态缓存和查询缓存区别。微信浏览器保存openid可以用缓存来替代session cookie吗