Spring Boot YAML配置文件语法详解与数据读取
Spring Boot 默认提供 application.properties 和 application.yml/yaml 两种全局配置文件。YAML (YAML Ain't Markup Language) 是一种以数据为中心的标记语言,相比 properties 文件更直观易读。在 Spring Boot Starter 依赖下,SnakeYAML 库已自动集成,可直接用于编写配置文件。本文将详解 YAML 的缩进规则、特殊字符处理及常用数据结构写法,并演示如何通过注解在 Java 代码中获取配置值。
基础语法与格式要求
使用 YAML 作为 Spring Boot 配置文件时,需遵循以下核心规范:
- 层级表示:通过空格缩进表示对象的层级关系。同级元素必须左对齐。
- 缩进限制:仅允许使用空格,禁止使用 Tab 键。虽然空格数不固定,但通常建议使用 2 个或 4 个空格。
- 敏感性:键值对区分大小写。
- 注释:单行注释使用
#开头。 - 键值对:格式为
key: value,冒号后必须跟一个空格。
基本数据类型写法
YAML 支持多种字面量(普通值),在赋值时需留意字符串的特殊处理。
第1步:定义与处理字符串
字面量如数字、布尔值、日期等直接赋值即可。字符串若不含特殊字符,可省略引号;若包含换行符等特殊符号,需注意单双引号的差异:
- 无引号/双引号:会转义控制字符。例如
"zhangsan \n lisi"实际输出为zhangsan[换行]lisi。 - 单引号:忽略转义符,按原文输出。例如
'zhangsan \n lisi'输出为zhangsan \n lisi。
第2步:定义对象(Map)
对象由键值对组成,有两种常见写法:普通缩进法和行内写法。
map1:
name: 张三
age: 23
map2: {name: 李四,age: 24}

第3步:定义数组(List/Set)
使用 - 表示数组元素,同样支持多行和行内写法:
list1:
- 张三
- 李四
list2: [王五,毛六]

复杂结构的数据映射
在 Java 代码中读取配置时,不同类型需要使用特定的注解和语法。
第4步:使用 @ConfigurationProperties 批量绑定
适用于将一组相关的配置属性绑定到 Java 对象上。使用此注解时,类需配合 Lombok 的 @Data 或提供标准的 Getter/Setter 方法,并通过 @Component 注册为 Bean。这种方式解耦了配置读取逻辑,推荐使用。

第5步:使用 @Value 读取单个或集合值
@Value 用于获取特定路径下的值,分为以下几种场景:
- 读取 Map 类型:
当 YAML 中 Map 采用行内写法{key: 'value'}时,由于 YAML 将其识别为字典而非标准字符串,必须在 Value 外层加上双引号包裹,并使用 SpEL 表达式读取:
test.map: "{name: '李四',age: 24}"
对应 Java 代码:
@Value("#{${test.map}}")
private Map<String,Object> map; - 读取 List 类型:
虽然可以使用标准 YAML 列表,但有时为了简化,也常将列表写为逗号分隔的字符串。
配置:test.list: 张三,李四,王五
读取方式 1(自动拆分):
读取方式 2(SpEL 拆分):@Value("${test.list}")
private List<String> list;
@Value("#{'${test.list}'.split(',')}")
private List<String> list;
第6步:组合结构示例
上述基本结构可任意嵌套。例如在 List 中嵌入 Map 对象:
test:
listInMap:
- name: 张三
age: 23
- name: 李四
age: 24
多文档与环境切换
YAML 文件天然支持多文档结构,使用 --- 分隔不同的配置片段,便于实现开发环境与生产环境的分离:
#默认配置
spring:
profiles:
active: dev
server:
port: 8081
spring:
config:
activate:
on-profile: dev
---
#测试环境配置
spring:
profiles:
active: test
spring:
config:
activate:
on-profile: test
总结
掌握 YAML 的缩进、转义机制以及结合 @ConfigurationProperties 和 @Value 的正确写法,能够显著提升 Spring Boot 项目的配置管理效率。以上关于 Spring Boot YAML 配置文件的详细内容,更多关于 Spring Boot 进阶配置的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









