SpringBoot配置文件的加载优先级以及如何配置

2021-03-17 12:26

阅读:467

标签:ref   外部   com   路径   设置   pre   omv   启动   --   

一、全局配置文件加载优先级

spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件.数值越小的标号优先级越高。

技术图片

  1. file:./config/ (当前项目路径config目录下);
  2. file:./ (当前项目路径下);
  3. classpath:/config/ (类路径config目录下);
  4. classpath:/ (类路径下).

以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容

技术图片

SpringBoot会从这四个位置全部加载主配置文件,如果高优先级中配置文件属性与低优先级配置文件不冲突的属性,则会共同存在—互补配置。假如我们在上面的四个配置文件分别设置server.port=6666、7777、8888、9999。然后启动应用,最终的启动端口为6666,因为file:./config/ (当前项目路径config目录下配置文件)优先级是最高的。

自定义改变全局配置文件的加载位置:(优先级最高)

先将项目打成jar包。(指定)

然后通过命令行配置spring.config.location来改变默认配置。

java -jar ./boot-launch-1.0.jar --spring.config.location=D:/application.yml

项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置。

二、配置加载优先级

SpringBoot也可以从以下位置加载配置:优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。

  1. 命令行参数
  2. 来自java:comp/env的JNDI属性
  3. Java系统属性(System.getProperties())
  4. 操作系统环境变量
  5. RandomValuePropertySource配置的random.*属性值
  6. jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
  7. jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
  8. jar包外部的application.properties或application.yml(不带spring.profile)配置文件
  9. jar包内部的application.properties或application.yml(不带spring.profile)配置文件
  10. @Configuration注解类上的@PropertySource
  11. 通过SpringApplication.setDefaultProperties指定的默认属性

其实大家关于配置的优先级不用特别的去记忆。用到的时候查一下、体验一下、一般来说:特殊指定配置(命令行、环境变量)大于通用配置、外部配置优先级高于内部配置、局部环境配置(带profile)大于全局普适性配置。

参考:官方文档,获得更多关于配置优先级的内容

SpringBoot配置文件的加载优先级以及如何配置

标签:ref   外部   com   路径   设置   pre   omv   启动   --   

原文地址:https://www.cnblogs.com/jinyuanya/p/13975221.html


评论


亲,登录后才可以留言!