SpringBoot 配置文件加载优先级

SpringBoot 配置文件加载优先级

  • 前言
    • SpringBoot 配置文件加载优先级

前言

最近在使用k8s部署项目的时候,发现Dockerfile文件中的命令后面跟的参数,无法覆盖nacos中的参数,今天有时间正好来整理一下Springboot配置的加载顺序

SpringBoot 配置文件加载优先级

整理加载顺序第一个肯定看官方文档:https://docs.spring.io/spring-boot/docs/2.2.9.RELEASE/reference/htmlsingle/#boot-features-external-config
看不懂我们直接用翻译软件翻译一下

SpringBoot 配置文件加载优先级_第1张图片
这里我们只对比常用的几个地方的配置优先级:

命令行参数
JAR包外面的 application-{profile}.properties
JAR包外的 application.properties
JAR包内的 application.properties

而且有的项目会将 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

你可能感兴趣的:(Spring,Boot,日常问题记录,spring,boot,后端,java)