SpringBoot 学习笔记:配置文件基础知识
- SpringBoot 配置文件
- 配置文件格式
- 配置文件名
- 配置优先级
- 配置文件优先级
- 内部配置文件(默认位置)
- 外部配置文件(默认位置)
- 外部配置文件(修改位置)
- 外部配置文件(添加位置)
- 设置为可选项
- 启动参数
- -D
- --
- SpringBoot 默认配置(文档)
- 参考文件
SpringBoot 配置文件
配置文件格式
-
SpringBoot
默认支持加载:.properties
、.yaml
和.yml
。
配置文件名
- 配置文件名(默认)
SpringBoot
默认支持加载文件名:application.properties
和application.yaml
。
提醒:
bootstrap.properties
和bootstrap.yml
是SpringCloud
配置文件。需要spring-cloud-context
依赖。
详情看文档: Spring Cloud Context: Application Context Services
- 配置文件名(自定义)
如果不喜欢默认配置文件名application
,可以指定配置文件名--=文件名
。
配置优先级
原则:
- 先入为主
- 由外而内
- 相同属性,高级覆盖低级
内外顺序:
[系统属性 | 命令行属性] >
。。。待补齐
配置文件优先级
从上
到下
,从左
到右
,依次递减:
- 按文件位置:
(指定)外部配置文件
>(默认)外部配置文件
>内部配置文件
- 文件名.profile:不带
profile
> 带profile
的优先级:application.yaml
>application-dev.yaml
- 文件格式:
properties
>yaml
>yml
内部配置文件(默认位置)
-
SpringBoot
默认的全局配置文件在src/main/resources
目录下。
外部配置文件(默认位置)
除了默认的全局配置文件
以外SpringBoot
项目默认会扫描以下位置,加载外部配置文件,优先级从底到高:
-
classpath
根目录 -
classpath
下的/config
目录 - 当前文件夹
- 当前文件夹下的
/config
目录 - 当前文件夹下的
/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
参考文件
- Blog
springboot配置文件的配置 - 官方文档
注意查看与自己相符的版本
官方文档 - 4.2 外部化配置文件 属性值优先级
官方文档 - 4.2.3. 外部配置文件属性 之 配置文件优先级官方文档 - SpringBoot 2.1.8.RELEASE:24.3 外部配置文件属性 之 配置文件优先级 - 湖边的小屋遗址
SpringBoot 学习笔记:配置文件基础知识
SpringBoot 学习笔记:YAML基本语法SpringBoot 学习笔记:配置文件属性注入