java - Spring Boot:我如何知道应用程序是否在 @PreDestroy 方法中被中断
问题描述
我有什么方法可以找出@PreDestroy
Spring Boot 应用程序中的方法是否因为CTRL-C
被按下或被调用而kill <PID>
被调用?
我想与应用程序定期停止的情况有所不同。(没有守护进程,没有 Web 服务器)
背景:
我将 Spring Boot 用作按计划在 Docker 容器中启动的 Runner。该应用程序可以正常工作并自行关闭。被调用kill <PID>
时发生。docker stop <containerid>
解决方案
您可以编写自己的方面来记录任何@PreDestroy
执行
@Aspect
@Component
public class CustomAspect {
@Around("@annotation(javax.annotation.PreDestroy)")
public Object logPreDestroyExecution(ProceedingJoinPoint joinPoint) throws Throwable {
// ...
// get info from joinPoint and log
// ...
return joinPoint.proceed();
}
}
更详细的例子:Spring AOP + AspectJ
推荐阅读
- angular - 未捕获(承诺):TypeError:无法读取未定义的属性“长度”
- python - 尝试安装 face_recognition 模块时出现 pip install 错误
- shell - 我可以向 Elixir 中的系统寻呼机发送一个字符串吗?
- c# - Autofac 6 - 根据其他服务的可用性注册装饰器
- c# - 如何在 Asp.Net Core 中使用 MailKit 发送电子邮件
- r - 如何在 R 中的 shapefile 上绘制不同的地区名称?
- discord.py - 如何在 discord.py 中添加多个命令
- python - Seaborn Barplot:异构条形图
- react-native - 样式化组件中的 React Native 转换
- hyperledger-fabric - 错误:hyperledger/fabric-peer 的清单:最新未找到:清单未知:清单未知