springboot 启动加载顺序

概述

Spring Boot的启动加载顺序是一个涉及多个步骤和组件的过程。以下是按照主要阶段和关键步骤划分的Spring Boot启动加载顺序的概述:

  1. 启动准备阶段:
    • 装载核心启动器类:org.springframework.boot.SpringApplication
    • 通过构造函数创建SpringApplication实例时,进行一系列的初始化工作,包括:
      • 判断并设置web环境类型(如SERVLET、REACTIVE等)。
      • 使用SpringFactoriesLoader加载ApplicationContextInitializerApplicationListener
      • 推断并设置主配置类(primary sources)。
  2. 配置加载阶段:
    • Spring Boot项目会按照特定的顺序加载配置文件,这些配置文件可以是application.propertiesapplication.yml格式。
    • 配置文件的加载顺序(优先级由高到低):
      • file:./config/(项目根路径下的config文件夹)
      • file:./(项目根路径)
      • classpath:/config/(类路径下的config文件夹)
      • classpath:/(类路径)
    • 外部配置文件的加载方式:
      • 命令行参数:可以直接在启动命令后添加启动参数。
      • spring.config.location:用于指定配置文件的新位置。
    • 如果多个文件有相同的key,高优先级的值会覆盖低优先级的值。
  3. 上下文准备阶段:
    • 准备并刷新应用上下文(Context)。
    • 加载所有的初始化器(如从META-INF/spring.factories配置文件中加载的)。
    • 加载所有的监听器(也是从META-INF/spring.factories配置文件中加载的)。
  4. 启动执行阶段:
    • 触发所有CommandLineRunner执行。
    • 执行自定义的初始化逻辑(如果有的话)。
  5. 完成阶段:
    • 启动完成,等待退出。

注意事项

  • 带profile的配置文件(如application-dev.yml)通常具有比不带profile的配置文件(如application.yml)更高的优先级。
  • 如果使用Spring Boot的自动配置机制,那么会有一系列自动配置类根据条件进行加载和配置。
  • 具体的启动加载顺序可能会因Spring Boot版本和具体配置而有所不同,但整体流程是类似的。

通过清晰地了解Spring Boot的启动加载顺序,可以更好地理解和控制应用的启动过程,以及如何进行配置和扩展。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-05-25,如有侵权请联系 cloudcommunity@tencent 删除工作命令行配置springboot