Spring Boot 的启动流程可以概括为以下几个关键步骤:
- 加载 SpringApplication:
- 当调用
SpringApplication.run()
方法时,Spring Boot 会创建一个SpringApplication
实例。 - 这个实例会初始化一些基本的配置,比如设置应用的主类、推断应用类型(Web 应用还是普通应用)、设置初始化器等。
- 当调用
- 准备环境:
- Spring Boot 会加载并配置应用的环境(
Environment
),包括从配置文件(如application.properties
或application.yml
)中读取配置。 - 环境配置还包括从命令行参数、系统属性等来源获取配置。
- Spring Boot 会加载并配置应用的环境(
- 创建应用上下文:
- Spring Boot 会根据应用类型创建相应的应用上下文(
ApplicationContext
)。对于 Web 应用,通常会创建AnnotationConfigServletWebServerApplicationContext
。 - 应用上下文是 Spring IoC 容器的核心,负责管理 Bean 的生命周期。
- Spring Boot 会根据应用类型创建相应的应用上下文(
- 刷新应用上下文:
- 在创建完应用上下文后,Spring Boot 会调用
refresh()
方法来刷新上下文。 - 这个过程包括加载 Bean 定义、初始化 Bean、调用 Bean 的后置处理器、注册 Bean 等。
- 在创建完应用上下文后,Spring Boot 会调用
- 执行 Runner:
- 在应用上下文刷新完成后,Spring Boot 会执行所有实现了
CommandLineRunner
或ApplicationRunner
接口的 Bean。 - 这些 Runner 通常用于在应用启动后执行一些初始化任务。
- 在应用上下文刷新完成后,Spring Boot 会执行所有实现了
- 启动内嵌的 Web 服务器:
- 如果是一个 Web 应用,Spring Boot 会启动内嵌的 Web 服务器(如 Tomcat、Jetty 或 Undertow)。
- Web 服务器启动后,应用就可以处理 HTTP 请求了。
- 发布应用启动事件:
- 在应用启动完成后,Spring Boot 会发布
ApplicationStartedEvent
和ApplicationReadyEvent
等事件。 - 这些事件可以用于在应用启动后执行一些自定义的逻辑。
- 在应用启动完成后,Spring Boot 会发布
- 应用运行:
- 至此,Spring Boot 应用已经启动完成,进入运行状态,等待处理请求或执行其他任务。
总结:
Spring Boot 的启动流程是一个复杂但高度自动化的过程,涵盖了从环境准备、上下文创建、Bean 加载到 Web 服务器启动等多个步骤。通过理解这些步骤,可以更好地掌握 Spring Boot 的工作原理,并在实际开发中更好地利用其特性。
THE END
暂无评论内容