乐趣区

关于后端:面试题精讲说一说springboot加载配置文件优先级

有的时候博客内容会有变动,首发博客是最新的,其余博客地址可能会未同步, 认准https://blog.zysicyj.top

首发博客地址

文章更新打算

系列文章地址


Spring Boot 加载配置文件的优先级是依据不同的地位和命名规定来确定的。上面依照优先级从高到低的程序来介绍:

  1. 命令行参数 :通过命令行参数指定的配置会笼罩其余配置。例如,应用--spring.config.name--spring.config.location参数能够指定配置文件的名称和地位。
  2. 操作系统环境变量 :Spring Boot 会主动将操作系统环境变量中以SPRING_ 结尾的变量转换为配置属性。例如,将 SPRING_APPLICATION_NAME 设置为 myapp,则能够在配置文件中应用${spring.application.name} 来援用该值。
  3. 命令行属性 :能够通过-D 参数或者 --spring.config.name--spring.config.location参数来指定配置文件的名称和地位。
  4. jar 包内部的 application.properties 或 application.yml:如果存在 config 文件夹,Spring Boot 会加载该文件夹下的 application.propertiesapplication.yml文件。
  5. jar 包外部的 application.properties 或 application.yml:如果 jar 包外部存在 application.propertiesapplication.yml文件,Spring Boot 会加载该文件。
  6. jar 包外部的 application-{profile}.properties 或 application-{profile}.yml:如果指定了激活的 profile,Spring Boot 会加载对应的 application-{profile}.propertiesapplication-{profile}.yml文件。
  7. jar 包内部的 application-{profile}.properties 或 application-{profile}.yml:如果存在 config 文件夹,Spring Boot 会加载该文件夹下的 application-{profile}.propertiesapplication-{profile}.yml文件。
  8. jar 包内部的 application.properties 或 application.yml:如果存在 config 文件夹,Spring Boot 会加载该文件夹下的 application.propertiesapplication.yml文件。

须要留神的是,Spring Boot 会依照上述程序加载配置文件,前面加载的配置会笼罩后面加载的配置。因而,如果存在多个配置文件,能够通过优先级来管制配置的加载程序。

另外,Spring Boot 还反对应用 @PropertySource 注解来加载自定义的配置文件,能够通过 value 属性指定配置文件的门路。这种形式的优先级介于 jar 包外部和 jar 包内部的配置文件之间。

总结起来,Spring Boot 加载配置文件的优先级从高到低顺次为:命令行参数 > 操作系统环境变量 > 命令行属性 > jar 包内部的配置文件 > jar 包外部的配置文件 > jar 包内部的 profile 配置文件 > jar 包外部的 profile 配置文件。

<!– md tj.md –>

本文由 mdnice 多平台公布

退出移动版