请说明 Spring Boot 应用从 main 方法开始启动 Web 容器的过程,包括关键组件和步骤。
考察说明
考查对 Spring Boot 启动流程的理解,包括自动配置、内嵌容器和启动原理。
回答思路
- 【回答框架 1】Spring Boot 应用使用 main 方法作为入口,通过 SpringApplication.run 静态方法启动容器。run 方法内部会创建 SpringApplication 实例,并调用其 run 方法。
- 【回答框架 2】run 方法主要步骤包括:设置 SpringApplicationRunListeners 监听器,准备环境 Environment,创建 ApplicationContext(默认为 AnnotationConfigServletWebServerApplicationContext),并触发刷新容器过程。
- 【回答框架 3】刷新容器过程中,Spring Boot 通过 AutoConfigurationImportSelector 加载自动配置类,根据条件注解(如 @ConditionalOnClass)和配置属性,决定是否注册对应的 Bean。例如,存在 spring-boot-starter-web 时,自动配置内嵌 Tomcat 和 Spring MVC。
- 【回答框架 4】在容器刷新完成后,Spring Boot 会启动内嵌的 Web 服务器(如 Tomcat),通过 ServletWebServerApplicationContext 创建并启动 Servlet 容器,并注册 DispatcherServlet 等组件。应用即可对外提供服务。
- 【关键点 1】main 方法通过 SpringApplication.run 启动整体应用。
- 【关键点 2】自动配置基于条件注解和 classpath 依赖进行 Bean 装配。
- 【关键点 3】内嵌 Web 服务器由 Spring Boot 自动配置并启动,如 Tomcat。
- 【易错点 1】不要混淆 Spring Boot 的启动过程与普通 Spring 的 annotation 配置扫描,自动配置是额外机制。
- 【易错点 2】内嵌容器的启动是在 Spring 容器刷新之后,并非 main 方法直接启动。