Spring Boot 配置文件
Spring Boot 使用一个全局的全局的配置文件:两种格式
- application.properties
- application.yaml/application.yml
配置文件的作用:修改 Spring Boot 自动配置的默认值
- 注意事项:application.yaml 格式支持 属性占位符,即 ${},但不支持 SpEL 表达式,即 #{}
配置文件的放置路径:按优先级从高到低排序
file:./config/
:当前项目的根目录的 /config 子目录中;file:./
:当前项目的根目录中;classpath:/config/
:项目 resources 的 /config 子目录中;classpath:/
:项目 resources 目录中;
- 同一个目录下,同时存在 application.yml 和 application.properties 文件,默认先读取application.properties
- 优先加载带 profile 的配置文件,application-{profile}.yaml 比 application.yaml 文件先加载
- 同一个属性,在多个配置文件均配置,默认使用第一个读取的,后面读取的不覆盖前面读取的,即高优先级配置会覆盖低优先级配置
- 可以通过配置 spring.config.location(application.yaml) 或 —spring.config.location(java启动参数) 来指定配置文件位置,用来改变默认配置
yaml 语法
yaml 基本语法:
- 使用缩进标识层级关系
- 缩进时不允许使用 tab 键,只允许使用空格
- 缩进的空格数目不重要,只需要相同层级的元素左侧对齐即可
- 大小写敏感
- yaml 的文件开始行为 —- ,表示一个文件的开始
yaml 支持的三种数据结构:
- 对象:键值对的集合
- 数组:一组按次序排列的值
- 字面量:单个的、不可再分的值
yaml 示例:
# 字面量,key: value
# 字符串默认不用加上单引号或双引号
# 当加上双引号时,不会转义里面的特殊字符,特殊字符会按原意进行表达,如 \n 会换行
# 当加上单引号时,会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: lisi
# 对象、Map(属性和值):支持 k-v 嵌套方式 或者 行内写法
# k-v嵌套
user:
name: lisi
age: 18
# 行内写法
user: {name: lisi,age: 18}
# 数组(List、Set):用 - value 表示数组中的一个元素,或者行内写法
subjects:
- math
- Chinese
- English
subjects: [math,Chinese,English]