SpingBoot- 配置优先级

1.SpringBoot项目当中支持的三类配置文件:

  • application.properties
  • application.yml
  • application.yaml

都是放在resource文件夹下
在这里插入图片描述

在SpringBoot项目当中,我们要想配置一个属性,可以通过这三种方式当中的任意一种来配置都可以,那么如果项目中同时存在这三种配置文件,且都配置了同一个属性,如:Tomcat端口号,到底哪一份配置文件生效呢?

  • application.properties
server.port=8081
  • application.yml
server:
   port: 8082
  • application.yaml
server:
   port: 8082

可见生效的是
- application.properties
server.port=8081

配置文件优先级排名(从高到低):

  1. properties配置文件
  2. yml配置文件
  3. yaml配置文件

注意事项:虽然springboot支持多种格式配置文件,但是在项目开发时,推荐统一使用一种格式的配置。(yml是主流)

2.除此之外SpringBoot为了增强程序的扩展性,除了支持配置文件的配置方式以外,还支持另外两种常见的配置方式:

  1. Java系统属性配置 (格式: -Dkey=value)

    -Dserver.port=9000
    
  2. 命令行参数 (格式:–key=value)

    --server.port=10010
    

这两种方式配置的优先级都比前面三种在文件中配置的优先级高,并且在这两种之中,命令行参数的优先级又要高于Java系统属性配置

3.综上所述,五种配置的优先级的先后顺序为

  • 1 命令行参数 (格式:–key=value)
  • 2 Java系统属性配置 (格式: -Dkey=value)
  • 3 application.properties
  • 4 application.yml
  • 5 application.yaml