视频字幕
Spring Boot 启动过程是一个精心设计的流程,核心在于 SpringApplication 类的 run 方法。整个过程包含多个关键步骤:从初始化 SpringApplication 对象开始,经过环境准备、上下文创建,最终启动完整的应用程序。
SpringApplication 初始化是启动过程的第一步。首先推断应用类型,判断是传统的 Servlet Web 应用、响应式 WebFlux 应用还是普通应用。然后通过 SpringFactoriesLoader 加载初始化器和监听器,最后推断主配置类,也就是标注了 SpringBootApplication 注解的类。
run 方法执行时,首先准备 Environment 环境,加载 application.properties 或 yml 配置文件,包括不同的 Profile 配置。然后根据应用类型创建对应的 ApplicationContext:Servlet Web 应用使用 AnnotationConfigServletWebServerApplicationContext,Reactive Web 应用使用 ReactiveWebServerApplicationContext,普通应用则使用 AnnotationConfigApplicationContext。
refreshContext 是整个启动过程的核心步骤。首先进行配置类解析,通过 ComponentScan 注解扫描包路径,加载所有的 Controller、Service、Repository 等组件。然后 EnableAutoConfiguration 注解触发自动配置机制,加载各种自动配置类。接着进行 Bean 的实例化和依赖注入,最后启动嵌入式的 Web 服务器如 Tomcat。
Spring Boot 启动完成后,应用进入就绪状态。整个启动过程体现了三个核心设计理念:事件驱动模型允许开发者通过监听器扩展启动过程;自动配置机制通过条件注解按需加载组件;嵌入式容器如 Tomcat、Jetty 实现开箱即用。这些设计遵循约定优于配置的原则,极大简化了 Spring 应用的开发和部署。