Spring Boot SpringApplicationRunListener 详解:启动流程的 “事件监听器”
SpringApplicationRunListener 是 Spring Boot 应用启动过程中的核心扩展接口,它通过 “监听启动生命周期的关键节点”,允许开发者在应用启动的不同阶段插入自定义逻辑(如日志埋点、环境校验、资源初始化)。从 “核心作用→启动阶段映射→工作机制→自定义实战” 四个维度,系统讲解 SpringApplicationRunListener 的原理与使用,帮你掌握 Spring Boot 启动流程的扩展能力。
核心定位:启动流程的 “钩子”
SpringApplicationRunListener 本质是 “启动生命周期监听器”,它与 Spring Boot 应用的启动流程深度绑定 ——Spring Boot 在启动的每个关键节点(如 “开始启动”“环境准备完成”“上下文创建”)都会主动调用监听器的对应方法,从而触发开发者的自定义逻辑。
- 不是主动执行逻辑:监听器本身不主导启动流程,而是 “被动接收” 启动节点的回调;
- 专注启动阶段扩展:覆盖从 “启动开始” 到 “启动完成 / 失败” 的全流程,是比
CommandLineRunner/ApplicationRunner更早的扩展点(后者仅在启动末尾执行); - 全局作用域:监听器作用于整个应用的启动过程,可用于全局初始化(如加载全局配置、初始化第三方组件)。
启动阶段与方法映射:每个方法对应什么时机?
Spring Boot 应用的启动流程可拆分为 7 个关键阶段,SpringApplicationRunListener 的每个方法精准对应一个阶段。我们逐一解析每个方法的触发时机和典型用途:
1. starting():启动 “刚刚开始”(最早阶段)
触发时机:
SpringApplication.run() 方法执行的第一行代码,此时: