看 Spring Boot 启动流程时,如果一上来就背事件名和扩展点,通常很快会乱。更稳的方式是先抓一条主线:从 SpringApplication.run 开始,到容器 refresh 完成为止,系统到底做了哪些阶段性动作。
先看启动前半段在准备什么
前半段重点是推断应用类型、准备 Environment、创建 ApplicationContext,并把监听器和初始化器这些扩展点装配起来。此时很多 Bean 其实还没有真正创建。
refresh 才是容器启动的核心阶段
真正的 BeanFactory 后置处理、BeanPostProcessor 注册、事件广播器初始化以及单例 Bean 创建,主要都发生在 refresh 过程中。理解这一点后,很多扩展点出现的位置就能串起来。
Bean 创建顺序要和生命周期接口一起看
实例化、属性注入、Aware 回调、前后置处理器、初始化方法,这些步骤决定了你写的扩展逻辑到底会在什么时候触发。排查启动问题时,这条链特别关键。
学习启动流程不要只背事件名
更重要的是知道每个阶段适合做什么事,例如环境加工、上下文定制、Bean 定义改写或启动后任务执行。理解用途,比背完整清单更实用。
结论
理解 Spring 启动顺序时,先抓住 run 到 refresh 的主线,再把 Environment、扩展点和 Bean 生命周期挂进去,整体会清楚很多。
正文完




