Spring Boot 的启动流程经过以下步骤:
1. 加载主配置类:Spring Boot 使用 `main` 方法作为应用程序的入口,在该方法中,会创建一个 `SpringApplication` 对象,并指定主配置类。
2. 创建ApplicationContext:`SpringApplication` 会根据主配置类创建一个 `ApplicationContext` 对象,该对象是 Spring 的核心容器,负责管理和组织应用程序中的各个组件。
3. 执行自动配置:Spring Boot 会根据类路径上的依赖和配置,自动配置应用程序中的各个组件。它会将自动配置类加载到容器中,并根据条件注解来确定哪些组件应该被装配。
4. 执行监听器:应用程序启动时,Spring Boot 会触发一系列的事件。这些事件可以被应用程序中定义的监听器捕获和处理。监听器可以在应用程序启动前后执行特定的逻辑。
5. 运行应用程序:`SpringApplication` 调用 `ApplicationContext` 的 `refresh()` 方法来完成容器的刷新和初始化工作。然后,它会根据配置的 Web 环境来决定是启动内嵌的 Servlet 容器还是使用外部的 Servlet 容器。
6. 加载控制器和处理请求:当应用程序成功启动并运行时,控制器将根据请求的路径来执行相应的业务逻辑,并给出响应。
7. 应用程序关闭:当应用程序关闭时,Spring Boot 会触发相应的事件,监听器可以捕获这些事件并执行清理操作。同时,Spring Boot 会关闭容器和释放相关资源。
除了上述的基本流程,Spring Boot 还提供了许多扩展点和配置选项,可以用于自定义和修改默认的启动流程。这些扩展点包括自定义的 Starter 模块、自定义的自动配置类、定制化的属性配置等。通过这些扩展点,开发人员可以更灵活地配置和定制 Spring Boot 应用程序的启动过程。