SpringBoot 学习笔记:配置文件基础知识

  • SpringBoot 配置文件
  • 配置文件格式
  • 配置文件名
  • 配置优先级
  • 配置文件优先级
  • 内部配置文件(默认位置)
  • 外部配置文件(默认位置)
  • 外部配置文件(修改位置)
  • 外部配置文件(添加位置)
  • 设置为可选项
  • 启动参数
  • -D
  • --
  • SpringBoot 默认配置(文档)
  • 参考文件


SpringBoot 配置文件

配置文件格式

  • SpringBoot默认支持加载:.properties.yaml.yml

配置文件名

  • 配置文件名(默认)
    SpringBoot默认支持加载文件名:application.propertiesapplication.yaml

提醒bootstrap.propertiesbootstrap.ymlSpringCloud 配置文件。需要 spring-cloud-context依赖。
详情看文档: Spring Cloud Context: Application Context Services

  • 配置文件名(自定义)
    如果不喜欢默认配置文件名application,可以指定配置文件名 --=文件名

配置优先级

原则

  1. 先入为主
  2. 由外而内
  3. 相同属性,高级覆盖低级

内外顺序
[系统属性 | 命令行属性] > 。。。待补齐

配置文件优先级

,从,依次递减:

  • 按文件位置(指定)外部配置文件 > (默认)外部配置文件 > 内部配置文件
  • 文件名.profile:不带 profile > 带 profile 的优先级:application.yaml > application-dev.yaml
  • 文件格式properties > yaml > yml

内部配置文件(默认位置)

  • SpringBoot默认的全局配置文件在src/main/resources目录下。

外部配置文件(默认位置)

除了默认的全局配置文件以外SpringBoot项目默认会扫描以下位置,加载外部配置文件,优先级从底到高:

  1. classpath根目录
  2. classpath下的/config目录
  3. 当前文件夹
  4. 当前文件夹下的/config目录
  5. 当前文件夹下的/config目录的直接子目录

SpringBoot启动后会按此列表顺序加载文件。如果有相同属性,后加载的覆盖前面的,所以在后面的优先级高。

外部配置文件(修改位置)

这里会用到命令行属性语法:-- 如:--<name>=<value> 指定外部配置文件 --spring.config.location=配置文件路径例子:注意路径斜杠
绝对路径:java -jar demo.jar --spring.config.location=E:/application.yaml 父文件夹:java -jar demo.jar --spring.config.location=../application.yaml 当前路径:java -jar demo.jar --spring.config.location=application.yaml 子文件夹:java -jar demo.jar --spring.config.location=config/application.yaml多个路径可以用逗号,分隔
java -jar demo.jar --spring.config.location=myconfig1.yaml,../myconfig2.yaml,../myconfig3.yaml

外部配置文件(添加位置)

--spring.config.location默认配置文件失效 了 。
如果不想修改,只想添加可以使用:spring.config.additional-location=配置文件路径

设置为可选项

java -jar demo.jar --spring.config.location=myconfig1.yaml 如果 myconfig1.yaml 不存在会报错提示:

Check that the value '../myconfig1.yaml' is correct, or prefix it with 'optional:'

如此我们添加上optional:即可让其不存时,也不会报错了。
java -jar demo.jar --spring.config.location=optional:myconfig1.yaml

启动参数

-D

语法:-D<name>=<value> 覆盖指定值,在启动时通过-D传参覆盖 的值
例子:java -jar -D=李四 demo.jar

命令行属性语法:-- 如:--<name>=<value>

SpringBoot 默认配置(文档)

2.1.0.BUILD-SNAPSHOT2.1.8.RELEASE

2.2.0.BUILD-SNAPSHOT2.2.0.M6

参考文件