spring-010: Spring Boot 启动背后的机制

spring-010: Spring Boot 启动背后的机制

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

Spring Boot应用启动分为三个主要阶段:1️⃣ 启动阶段:JVM启动,执行SpringApplication.run(),准备环境和配置。2️⃣ 上下文初始化阶段:创建并刷新应用上下文,扫描和注入Bean,启动嵌入式服务器(如有)。3️⃣ 启动后阶段:执行CommandLineRunner和ApplicationRunner,应用准备好处理请求。

🎯

关键要点

  • Spring Boot应用启动分为三个主要阶段:启动阶段、上下文初始化阶段和启动后阶段。
  • 启动阶段包括JVM启动和执行SpringApplication.run(),准备环境和配置。
  • 上下文初始化阶段创建并刷新应用上下文,扫描和注入Bean,启动嵌入式服务器(如有)。
  • 启动后阶段执行CommandLineRunner和ApplicationRunner,应用准备好处理请求。
  • JVM启动并加载主类,执行SpringApplication.run()方法以启动应用。
  • SpringApplication初始化,加载应用配置和环境属性,准备应用上下文。
  • 创建Spring应用上下文,管理Bean、配置和依赖关系。
  • 加载ApplicationContextInitializers和SpringApplicationRunListeners。
  • 准备环境变量、应用配置文件和命令行参数,确定活动和默认配置文件。
  • 刷新应用上下文,扫描注解类,实例化Bean并管理其生命周期。
  • 如果是Web应用,自动启动嵌入式Web服务器,监听请求。
  • 执行CommandLineRunner和ApplicationRunner,运行初始化逻辑。
  • 触发ApplicationReadyEvent,表示应用已完全启动并准备好处理请求。
  • Web应用保持运行状态,等待HTTP请求;非Web应用在运行初始化逻辑后退出。

延伸问答

Spring Boot应用启动的主要阶段有哪些?

Spring Boot应用启动分为三个主要阶段:启动阶段、上下文初始化阶段和启动后阶段。

在Spring Boot启动阶段,JVM执行了哪些操作?

在启动阶段,JVM启动并加载主类,执行SpringApplication.run()方法以启动应用。

上下文初始化阶段的主要任务是什么?

上下文初始化阶段创建并刷新应用上下文,扫描和注入Bean,启动嵌入式服务器(如有)。

Spring Boot如何处理应用配置和环境属性?

Spring Boot在启动阶段加载应用配置和环境属性,并准备应用上下文。

什么是CommandLineRunner和ApplicationRunner,它们在启动后阶段的作用是什么?

CommandLineRunner和ApplicationRunner是用于在应用启动后执行初始化逻辑的接口,它们在启动后阶段被执行。

Spring Boot应用在启动后如何保持运行状态?

对于Web应用,Spring Boot保持应用运行状态,等待HTTP请求;非Web应用在运行初始化逻辑后退出。

➡️

继续阅读