Spring Boot YAML配置文件语法详解与数据读取

Finn
Finn
发布时间:2026-10-15 | 5人浏览过
原创

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 用于获取特定路径下的值,分为以下几种场景:

  1. 读取 Map 类型:
    当 YAML 中 Map 采用行内写法 {key: 'value'} 时,由于 YAML 将其识别为字典而非标准字符串,必须在 Value 外层加上双引号包裹,并使用 SpEL 表达式读取:
    test.map: "{name: '李四',age: 24}"
    对应 Java 代码:
    @Value("#{${test.map}}")
    private Map<String,Object> map;
  2. 读取 List 类型:
    虽然可以使用标准 YAML 列表,但有时为了简化,也常将列表写为逗号分隔的字符串。
    配置:test.list: 张三,李四,王五
    读取方式 1(自动拆分):
    @Value("${test.list}")
    private List<String> list;
    读取方式 2(SpEL 拆分):
    @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 进阶配置的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表