在应用程序中的所有其他bean被销毁之前执行一步工作
2024-10-19 17:48:10
1、实现ServletContextListener、ApplicationContextAware两个接口,在销毁方法里借助ApplicationContextAware注入的application对象使用
2、实现ApplicationListener,自己添加需要用到的依赖对象(参考https://www.dazhuanlan.com/2019/11/28/5ddf9ac1a4c77/)
public class MyListener implements ApplicationListener {
@Override
public void onApplicationEvent(ApplicationEvent event) {
if(event instanceof ContextClosedEvent) {
stopScheduler();
}
}
}
3、实现Lifecycle接口
4、第2、3都需要调用classPathXmlApplication.close()才会执行这些方法,因为是纯java的应用我不需要显式的去关闭容器,后面看到一种钩子的方法
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { public void run() {
stopScheduler();
}
}));
我通过实现beanPostProcessor接口的时候随意before还是after加入这个方法(判断是否是我注册的这个beanName,不然会注册n个钩子。。。。),这样在进程结束的时候就会执行这个线程方法里匿名调用自定义的方法,而且还能继续拿到bean(因为根本没有销毁beans)
最新文章
- 不注册Tomcat服务,运行Tomcat不弹出JAVA控制台窗口
- BOP 2016 复赛题目
- js异步加载的三种解决方案
- 使用mysqli_stmt类
- iOS - OC NSRect 位置和尺寸
- 11 Indexes
- 纯CSS制作二级导航
- win7常用键
- 用Spring Boot零配置快速创建web项目(1)
- 如何A掉未来程序改
- DLL 导出函数
- MAC 上传文件到github
- 数据库表反向生成(二) Django ORM inspectdb
- iOS下OpenCV开发配置的两个常见问题(sign和link)
- 阿里云CentOS安装PostgreSQL
- 清北学堂学习总结day2
- 如何将数据库中的数据导入到Solr中
- solr4.7配置(ik-analyzer)
- 转:VS2013快捷键大全
- spring data jpa @query的用法