深入springboot加载配置文件顺序,以及多文件加载
1.properties或yml加载的位置,优先级
file:./config/
file:./
classpath:/config/
classpath:/
以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置的内容
例如这个路径,两个properties都会被加载,but,config目录下面的优先级高,所以占主导地位的是config目录下的。由于这几个文件都会被加载,所以是互补的配置(类似于笛卡尔积? )。
口诀,外到内,config到无。
同时还可以使用Spring,config,location= “一个绝对路径”加载
2.多个文件加载(properties.active)
application.properties
spring.profiles.active=(一个application-xxx.properties的后缀)xxx;
#这样application-xxx.properties就能被加载
3.多个文件加载(ymal,----active)
ymal中使用三个"-":—来进行分割文本块
server:
port: 8081
spring:
profiles:
active: xxx
---
server:
port: 8083
spring:
profiles: xxx
#这样就会调用8083的服务器
4.使用命令行的方式
在命令行参数里面添加
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2lr7WFv1-1600783103731)(C:\Users\13710795181\Desktop\recent\命令行.png)]
或者在虚拟机参数里面增加VM_Option
5.外部配置
1.命令行参数(打包完成后java -jar运行你要走的 —server.port=8087)这样就可以修改端口号了
假如配置多的话应该用空格分开—server.port=8087 —server.context-path=/abc
假如配置究极多的话 把properties文件放在和jar包的同目录下,不输入参数,跑起来的就是jar包旁边的
2.来自java:comp/env的JNDI属性
3.java系统属性
4.操作系统环境变量
优先加载带profile的
5.jar包外部的application-{profile}.propertise或application.yml(带spring.profile)配置文件
6.jar包内部的application-{profile}.propertise或application.yml(带spring.profile)配置文件
再来加载不带profile的
7.jar包外部的application.propertise或application.yml(不带spring.profile)配置文件
8.jar包内部的application.propertise或application.yml(不带spring.profile)配置文件
9.@Configuration注解类上的@PropertySource
10.通过SpringApplication,setDefaultProperties来指定默认的属性
优先级从上到下!优先加载上面的,
可以去官方文档看~~