springboot 详细启动流程
时间: 2023-09-11 13:03:11 浏览: 97
Spring Boot 启动过程可以分为以下几个阶段:
1. 加载应用程序类:Spring Boot 启动时,首先会根据配置文件中的 `spring.main.sources` 属性加载应用程序类。如果该属性未指定,则默认加载启动类。
2. 加载 Spring 环境:Spring Boot 会根据配置文件中的 `spring.config.name`、`spring.config.location`、`spring.profiles.active` 等属性来加载 Spring 环境。其中,`spring.config.name` 指定配置文件名,`spring.config.location` 指定配置文件路径,`spring.profiles.active` 指定激活的环境。Spring Boot 会依次从 classpath、文件系统、URL 和其他地方加载配置文件,然后将它们合并成一个统一的配置环境。
3. 执行自动配置:Spring Boot 会根据应用程序的依赖和配置,自动配置应用程序所需要的组件。Spring Boot 自动配置是基于条件的,即只有在满足一定的条件时才会自动配置。
4. 创建 Spring 应用程序上下文:Spring Boot 会创建一个 Spring 应用程序上下文,加载所有的 Bean 定义和依赖,并且将它们组合在一起。Spring Boot 应用程序上下文是基于 Spring 的 `ApplicationContext` 接口实现的,但是它会根据应用程序的类型和配置来自动决定使用哪个具体的实现。
5. 注册应用程序监听器:Spring Boot 会注册一些应用程序监听器,例如 `ApplicationStartedEvent`、`ApplicationEnvironmentPreparedEvent`、`ApplicationPreparedEvent`、`ApplicationFailedEvent` 等,用于监听应用程序的启动过程。
6. 启动 Web 服务器:如果应用程序是 Web 项目,Spring Boot 会启动嵌入式 Web 服务器,例如 Tomcat、Jetty 或 Undertow。Spring Boot 嵌入式 Web 服务器是基于 Servlet 规范实现的,并且支持 Servlet 3.0 规范及以上版本。
7. 运行应用程序:Spring Boot 启动后,应用程序会开始运行,并且接收来自外部的请求。在运行期间,Spring Boot 还会监听一些系统事件,例如 `ContextRefreshedEvent`、`ContextClosedEvent` 等,用于监听应用程序的运行过程。
以上就是 Spring Boot 的详细启动流程。
阅读全文