项目中可以在多个地方添加配置文件,相同配置若存在多个配置文件中,优先级高的才会生效。
配置优先级为:命令行参数 > Nacos 远程配置 > JVM 参数 > 系统环境变量 > jar 外部 config > jar 外部根目录 > jar 内部 config > jar 内部 resources 根目录
验证环境
java 8
springBoot 2.7.18
验证
构建一个springBoot 项目,导入web依赖,在不同地方添加server.port配置,由低到高在不同地方添加server.port配置观察生效情况。项目启动后不添加任何配置默认端口是8080

1、jar 内部 resources 根目录
resource目录下添加配置文件设置端口为8081,重启项目

2、jar 内部 config
在resources目录下创建config目录并添加配置文件设置端口为8082

3、jar 外部根目录
打包项目,并在jar目录下添加配置设置端口为8083,使用java -jar 启动jar包

4、jar 外部 config
在jar对应目录下新增config目录,然后添加配置文件并设置端口为8084,java -jar 重启项目观察端口

5、系统环境变量
添加环境变量server.port=8085,重启工程观察端口(添加环境变量后cmd要重新打开,否则新增配置不会生效)。

6、JVM 参数
在java -jar 启动jar包时添加参数-Dserver.port=8086重启项目。注意jvm 参数位置:java JVM参数(-D/-Xms) -jar xxx.jar 程序启动参数(--)

7、命令行参数
添加同时添加命令行参数 --server.port=8087,重启服务。

到此为止,除了nacos配置外,其余位置优先级已全部验证。
多环境配置加载规则(application-xxx.yml)
1、先加载主配置 application.yml
2、再加载激活的环境配置 application-dev.yml / application-prod.yml
3、环境配置中同名 key 会覆盖主配置的值
激活方式三种:
yml 内:spring.profiles.active=dev
JVM 参数:-Dspring.profiles.active=dev
命令行:--spring.profiles.active=dev