SpringBoot 启动流程解析
Spring Boot 是基于 Spring 框架的快速开发框架,极大简化了项目配置和启动流程。理解其启动流程有助于深入掌握框架原理和调试项目。
一、启动入口
Spring Boot 应用的启动入口通常是主类的 main 方法,调用:
1 | SpringApplication.run(Application.class, args); |
这行代码触发了整个 Spring Boot 启动过程。
二、SpringApplication 初始化
SpringApplication 是启动的核心类,主要完成:
- 读取启动参数
- 准备环境(Environment)
- 创建 Spring 容器(ApplicationContext)
- 加载和刷新上下文
- 执行
CommandLineRunner和ApplicationRunner
三、启动流程详解
创建 SpringApplication 实例
通过传入主类,Spring Boot 识别启动类的基本信息。准备环境
加载配置文件(application.properties或application.yml),包括配置的 profiles 和环境变量。创建 ApplicationContext
根据项目类型(Web 或非 Web)选择合适的上下文容器,比如AnnotationConfigServletWebServerApplicationContext。注册监听器和初始器
添加事件监听器,处理启动前后的事件通知。初始器可以自定义容器准备工作。加载 Bean 定义
通过@SpringBootApplication(包含@SpringBootConfiguration和@ComponentScan)扫描并注册 Bean。刷新容器
初始化所有单例 Bean,处理依赖注入。启动嵌入式服务器
如果是 Web 应用,启动内置 Tomcat/Jetty 等服务器。执行 Runner
执行实现了CommandLineRunner或ApplicationRunner接口的 Bean。完成启动
Spring Boot 完成启动,监听端口,等待请求。
四、启动事件
启动过程会发布多个事件,可以监听:
ApplicationStartingEventApplicationEnvironmentPreparedEventApplicationPreparedEventApplicationStartedEventApplicationReadyEventApplicationFailedEvent
这些事件适合在不同阶段插入自定义逻辑。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.










