1、springboot bootstrap.yml和application.yml
若application.yml 和bootStrap.yml 在同一目录下,则bootStrap.yml 的加载顺序要高于application.yml,即bootStrap.yml 会优先被加载。
2、springboot项目内部配置文件加载顺序
工程根目录:./config/
工程根目录:./
classpath:/config/
classpath:
加载的优先级顺序是从上向下加载,并且所有的文件都会被加载,高优先级的内容会覆盖底优先级的内容,形成互补配置
properties,yaml,yml的文件在同一路径下的三个文件,三个文件中的配置信息都会生效,
但是当三个文件中有配置信息冲突时,加载顺序是yml>yaml>properties,所以优先级是:properties>yaml>yml,后加载的会覆盖先加载的文件
3、springboot项目外部配置文件加载顺序
SpringBoot也可以从以下位置加载配置:优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。
1、命令行参数
所有的配置都可以在命令行上进行指定;
多个配置用空格分开; –配置项=值
java -jar spring-boot-demo.jar
--server.port=8087 –server.context-path=/config
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)配置文件
由jar包外向jar包内进行寻找,优先加载待profile的,再加载不带profile的。
10、@Configuration注解类上的@PropertySource
11、通过SpringApplication.setDefaultProperties指定的默认属性
在不指定要被加载文件时,默认的加载顺序:由里向外加载,所以最外层的最后被加载,会覆盖里层的属性