SpringBoot 配置文件加载优先级
- 前言
- SpringBoot 配置文件加载优先级
前言
最近在使用k8s部署项目的时候,发现Dockerfile文件中的命令后面跟的参数,无法覆盖nacos中的参数,今天有时间正好来整理一下Springboot配置的加载顺序
SpringBoot 配置文件加载优先级
整理加载顺序第一个肯定看官方文档:https://docs.spring.io/spring-boot/docs/2.2.9.RELEASE/reference/htmlsingle/#boot-features-external-config
看不懂我们直接用翻译软件翻译一下
这里我们只对比常用的几个地方的配置优先级:
而且有的项目会将 application.properties 文件放在config文件夹内,于是进一步对比了这两个位置的优先级,结果如下
. project-sample
├── config
│ ├── application.yml (4)
│ └── src/main/resources
| │ ├── application.yml (1)
| │ └── config
| | │ ├── application.yml (2)
├── application.yml (3)
注:src/main/resources下的配置文件在项目编译时,会放在target/classes下
启动时加载配置文件顺序:1 -> 2 -> 3 -> 4,优先级 4 > 3 > 2 > 1
注意:
- 如果在IDEA中是多 module 项目,3 和 4 的位置是指的是项目根目录下的位置
- 当 .properties 和 .yml 文件同时存在时,.properties会失效,.yml会起作用。
nacos上的配置 > 命令行配置 > system env > classpath:application.yml > classpath:bootstrap.yml