企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
Spring Boot 的启动过程可以分为以下几个阶段: 1. 加载 Spring Boot 启动类:当我们执行 `java -jar` 命令启动应用程序时,会加载指定的 Spring Boot 启动类,例如 `DemoApplication.java`。 2. 初始化 Spring 环境:Spring Boot 程序在启动时,会根据需要自动配置 Spring 环境,例如加载默认的配置文件 `application.properties` 或者 `application.yml`。 3. 加载外部配置:Spring Boot 程序启动时会自动查找一些外部的配置文件,例如 `/etc/application.properties` 或者 `/etc/application.yml`,并将其与内置的配置文件进行合并,形成最终的配置信息。 4. 执行 `ApplicationContextInitializer`:Spring Boot 程序启动时会执行所有注册的 `ApplicationContextInitializer` 实现类中的方法,该方法可以对 Spring 应用程序上下文进行初始化。 5. 执行 `SpringApplicationRunListener`:Spring Boot 程序启动时会执行所有注册的 `SpringApplicationRunListener` 实现类中的方法,该方法可以监听 Spring Boot 的各种事件并做出相应的处理。 6. 创建 SpringApplication 对象:Spring Boot 程序会创建一个 `SpringApplication` 对象,并将其配置为非 Web 或 Web 应用程序。 7. 执行 `SpringApplication` 的 `run()` 方法:Spring Boot 程序会执行 `SpringApplication` 的 `run()` 方法,该方法会启动整个 Spring 应用程序。 8. 加载 Application 上下文:`run()` 方法将会创建 SpringApplication 上下文对象,该对象是 Spring 应用程序中最重要的容器。 9. 执行 `ApplicationContextInitializer`:该阶段会再次执行所有注册的 `ApplicationContextInitializer` 实现类中的方法,该方法可以对 Spring 应用程序上下文进行初始化。 10. 执行 `SpringApplicationRunListener`:该阶段会再次执行所有注册的 `SpringApplicationRunListener` 实现类中的方法,该方法可以监听 Spring Boot 的各种事件并做出相应的处理。 11. 注册 `ShutdownHook`:为了在应用程序关闭时能够正确地释放资源、关闭连接等,Spring Boot 程序会注册一个 `ShutdownHook` 钩子函数。 12. 应用程序运行:启动完毕后,应用程序进入正常的待机状态,等待接收 HTTP 请求或其他事件的触发。 总之,Spring Boot 的启动过程从加载启动类开始,逐步完成了环境、配置、监听器、上下文等的初始化,最终进入到正常的运行状态。在这个过程中,我们可以通过自定义一些集成接口来干预应用程序的初始化和启动过程,以实现自定义需求。