【发布时间】:2014-12-27 23:34:29
【问题描述】:
如何注册/添加一个自定义关闭例程,该例程在我的 Spring Boot 应用程序关闭时触发?
场景:我将 Spring Boot 应用程序部署到 Jetty servlet 容器(即,没有嵌入式 Jetty)。我的应用程序使用 Logback 进行日志记录,我想在运行时使用 Logback 的 MBean JMX 配置器更改日志记录级别。 Its documentation states that to avoid memory leaks, on shutdown a specific LoggerContext shutdown method has to be called.
监听 Spring Boot 关闭事件的好方法是什么?
我试过了:
public static void main(String[] args) throws Exception {
ConfigurableApplicationContext cac = SpringApplication.run(Example.class, args);
cac.addApplicationListener(new ApplicationListener<ContextClosedEvent>() {
@Override
public void onApplicationEvent(ContextClosedEvent event) {
logger.info("Do something");
}
});
}
但是当应用程序关闭时,这个注册的监听器不会被调用。
【问题讨论】:
-
您在创建上下文后注册监听器,基本上使其无用。如果您希望它参与,您需要像任何其他 bean 一样在您的应用程序上下文中将其注册为 bean。
标签: java spring-boot