有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准
https://blog.zysicyj.top
Spring Boot 是一个用于快速开发独立的、生产级别的基于 Spring 框架的应用的工具。它简化了基于 Spring 的应用开发,特别是微服务的开发。下面是 Spring Boot 应用的启动过程的详细解析。
main
方法入口一切从 main
方法开始。Spring Boot 应用的入口点是包含 main
方法的类,该类通常使用 @SpringBootApplication
注解标记。
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
SpringApplication.run()
SpringApplication.run()
是启动 Spring Boot 应用的核心。它执行了以下关键步骤:
SpringApplication
对象首先,它会创建一个新的 SpringApplication
实例。这个实例负责管理应用的启动。
Spring Boot 会推断应用是普通的 Spring 应用还是 Web 应用(Servlet 或 Reactive 类型)。
ApplicationContext
根据应用的类型,Spring Boot 会选择创建一个合适的 ApplicationContext
实例(例如 AnnotationConfigApplicationContext
或 AnnotationConfigServletWebServerApplicationContext
)。
Spring Boot 会准备 Environment
,用于配置应用。这包括读取配置文件、系统属性、环境变量等。
应用初始化器 ApplicationContextInitializer
会被调用,它们可以在 ApplicationContext
被刷新之前对其进行进一步的设置或处理。
各种事件监听器 ApplicationListener
会被触发,以响应不同的应用生命周期事件。
SpringApplication
会加载应用的主配置类(通常是使用 @SpringBootApplication
注解的类)。
ApplicationContext
ApplicationContext
会被刷新,这将导致 Spring 容器加载所有的单例 beans。
如果有的话,CommandLineRunner
和 ApplicationRunner
beans 会被执行。
如果是 Web 应用,Spring Boot 会启动内嵌的服务器(比如 Tomcat、Jetty 或 Undertow)。
最后,ApplicationReadyEvent
会被发布,表示应用已经准备好接受请求。
此时,Spring Boot 应用已经启动并且运行中。它会持续运行,直到被关闭或者遇到中断。
当应用关闭时,ApplicationContext
会被关闭,这会导致 ContextClosedEvent
事件的发布。所有的标准清理步骤,如调用 DisposableBean
的 destroy
方法和关闭日志系统,都会在这个阶段执行。
以上就是 Spring Boot 应用的启动过程的详细解析。这个过程涉及了许多 Spring 框架的核心概念,如依赖注入、事件发布、环境抽象等。通过这个过程,Spring Boot 使得启动和运行基于 Spring 的应用变得更加简单和快速。
本文由 mdnice 多平台发布
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有