SpringBoot通过监听器在程序启动以及关闭时完成某些操作

方式

  1. 通过实现ApplicationListener接口创建监听器,ApplicationListener的泛型传入一个应用程序事件;

  2. 使用SpringApplication.addListeners(…)方法或 SpringApplicationBuilder.listeners(…)方法注册监听器。

步骤

1.启动时监听器

1
2
3
4
5
6
7
8
9
10
11
12
13
public class ApplicationStartListener implements ApplicationListener<ContextRefreshedEvent> {


@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
logger.error("监听SpringBoot容器启动事件|START...");
//todo 启动时需要加载的任务
logger.error("监听SpringBoot容器启动事件|END...");
}



}

2.关闭时监听器

1
2
3
4
5
6
7
8
9
10
11
12
13

public class ApplicationCloseListener implements ApplicationListener<ContextClosedEvent> {


@Override
public void onApplicationEvent(ContextClosedEvent event) {
logger.error("监听SpringBoot容器关闭事件|START...");
//todo 关闭时需要执行的任务
logger.error("监听SpringBoot容器关闭事件|END...");
}


}

3.启动类注册监听器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args) {
logger.error("启动应用...");
long start = System.currentTimeMillis();


ConfigurableApplicationContext context = new SpringApplicationBuilder()
.properties("spring.config.location=/opt/config/test/application.properties")
.sources(StartupApplication.class)
.registerShutdownHook(true)
.web(false)
.listeners(new ApplicationStartListener())
.listeners(new ApplicationCloseListener())
.run(args);
long end = System.currentTimeMillis();
logger.error("Dubbo Service Start Completed, Total: {}s", (end - start) / 1000);


}
------ 本文完 ------