目录
1 位置相同时,后缀不同的优先级
当properties、yaml和yml三种文件路径相同时,三个文件中的配置信息都会生效,但是当三个文件中有配置信息冲突时,加载顺序是:
yml > yaml > properties
2 配置文件在不同位置时的优先级
创建一个springboot项目
controller层
@RestController
@RequestMapping
public class TestController {
@Value("${person.name}")
private String name;
@GetMapping("/test")
public String test(){
return name;
}
}
yml配置文件
server:
port: 7777
person:
name: lvxy
2.1 默认启动,配置文件打包进jar包
默认启动时,无其他位置配置文件,则加载默认的配置文件
java -jar xxx.jar
2.2 在jar包同级目录下也有一份配置文件
jar包同一目录下优先级大于默认配置
application.yml
server:
port: 7777
person:
name: lvxy
启动
2.3 docker-compose部署时,docker-compose文件中也包含配置(重点)
docker-compose中优先级最高,而且同一docker-compose文件中后面配置会覆盖前面配置
项目目录
Dockerfile文件
FROM openjdk:8-jdk-alpine
WORKDIR /code
COPY 11-ymltest-0.0.1-SNAPSHOT.jar 11-ymltest-0.0.1-SNAPSHOT.jar
COPY application.yml application.yml
CMD ["java","-jar","11-ymltest-0.0.1-SNAPSHOT.jar"]
application.yml
server:
port: 7777
person:
name: lvxy
docker-compose文件
version: "3.1"
services:
java:
build: .
environment:
person.name: liujian
environment:
person.name: liao
ports:
- 7777:7777
构建运行
[root@k8s-master java]# docker-compose up -d --build
Creating network "java_default" with the default driver
Building java
Step 1/5 : FROM daocloud.io/library/java:8-jdk-alpine
---> 3fd9dd82815c
Step 2/5 : WORKDIR /code
---> Using cache
---> 7fc06517d955
Step 3/5 : COPY 11-ymltest-0.0.1-SNAPSHOT.jar 11-ymltest-0.0.1-SNAPSHOT.jar
---> Using cache
---> 28c708480758
Step 4/5 : COPY application.yml application.yml
---> 8ed5d1b0474b
Step 5/5 : CMD ["java","-jar","11-ymltest-0.0.1-SNAPSHOT.jar"]
---> Running in 936c99ff0a8c
Removing intermediate container 936c99ff0a8c
---> b4a8fab8fee8
Successfully built b4a8fab8fee8
Successfully tagged java_java:latest
Creating java_java_1 ... done
结果:
3 结论
docker-compose.yml > ./application.yml > resoures/application.yml