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: lisiage: 18# 行内写法user: {name: lisi,age: 18}# 数组(List、Set):用 - value 表示数组中的一个元素,或者行内写法subjects:- math- Chinese- Englishsubjects: [math,Chinese,English]
