ApplicationReadyEvent-项目启动完成后执行数据预热操作
ApplicationReadyEvent 是 Spring Boot 中非常重要的应用生命周期事件,它表示 Spring 应用已完全启动完毕,处于可正常对外服务的状态。
核心作用-标志应用启动完成
-
触发时机:在所有 Spring Bean 初始化完成、嵌入式容器(如 Tomcat)启动完毕、健康检查通过之后。
-
与
ContextRefreshedEvent的区别:-
ContextRefreshedEvent:仅表示 Spring 容器刷新完成(此时容器可能还未完全就绪)。 -
ApplicationReadyEvent:表示整个应用(包括容器、健康指标等)已准备好接收请求。
-
2. 典型应用场景
| 场景 | 说明 |
|---|---|
| 启动后初始化逻辑 | 如缓存预热、数据库连接测试 |
| 外部服务注册 | 向注册中心(如 Nacos、Eureka)注册服务 |
| 监控上报 | 通知监控系统应用已就绪(如 Prometheus) |
| 后台任务启动 | 启动定时任务、消息队列监听等 |
使用方式
1. 通过 @EventListener 监听(推荐)
@Component
public class AppStartupListener {
@EventListener(ApplicationReadyEvent.class)
public void onAppReady() {
System.out.println("应用启动完成,执行初始化逻辑...");
// 这里可以安全调用其他Spring Bean(如数据库操作)
}
}
2. 通过 ApplicationListener 接口监听
@Component
public class MyReadyListener implements ApplicationListener<ApplicationReadyEvent> {
@Override
public void onApplicationEvent(ApplicationReadyEvent event) {
// 处理逻辑
}
}
在 Spring 框架中,@EventListener 和 ApplicationListener 都用于监听应用事件,
@EventListener是Spring 4.2+版本新增的,更灵活,可以配合@Async注解异步执行,ApplicationListener是spring1.0版本的
浙公网安备 33010602011771号