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版本的
 
posted @ 2025-07-02 16:44  杨吃羊  阅读(92)  评论(0)    收藏  举报