yaml 通过缩进表达层级结构,配合 @configurationproperties 绑定 java 对象,支持嵌套、列表和 map,比 properties 更适合复杂配置;需注意缩进用空格、冒号后空格、大小写敏感等语法规范。

直接用 application.yml 替代 application.properties,核心不是“换格式”,而是利用缩进表达层级、配合类型绑定把配置结构映射到 Java 对象上——这样才真正发挥 YAML 的价值。
YAML 文件怎么写才对
必须用空格缩进(不能用 Tab),同一层级的 key 左对齐;冒号后面加一个空格;大小写敏感;支持注释(# 开头)。
- 嵌套对象用缩进表示,比如数据库配置不用重复写
spring.datasource.xxx,直接缩进写:
app:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secret
pool:
max-size: 10
min-idle: 2
- 列表用
-表示,Map 可用块格式或行内格式(如headers: {content-type: application/json}) - 字符串值若含空格、冒号或特殊字符,建议加单引号或双引号,避免解析错误
怎么让 YAML 配置生效到 Java 类里
光有 .yml 文件还不够,得靠 @ConfigurationProperties 把它和 Java 对象绑定起来。
- 定义一个配置类,用
@ConfigurationProperties(prefix = "app")指定前缀 - 内部用静态嵌套类表示层级,字段名按小写短横线转驼峰(
max-size→maxSize) - 在启动类或配置类上加
@EnableConfigurationProperties(AppConfig.class) - 确保项目引入
spring-boot-configuration-processor,否则 IDE 不会提示字段名
依赖和兼容性注意点
Spring Boot 默认内置 YAML 支持,无需额外加 SnakeYAML 依赖——但如果你手动解析 YAML 文件(比如读取非 application.yml 的自定义配置),推荐用 Jackson 的 jackson-dataformat-yaml,比 SnakeYAML 更稳定,尤其在处理数字、布尔、null 类型时不易出错。
- Maven 中添加:
-
.yml和.yaml完全等价,Spring Boot 优先加载application.yml;如果两者共存,.yml覆盖.yaml - 多环境配置可用
---分隔多个文档块,配合spring.profiles.active切换
什么时候该用 YAML,而不是 properties
当配置开始出现三层以上嵌套、需要表达列表或 Map、或者团队多人维护同一份配置时,YAML 就显出优势了。
- 比如微服务中不同环境的数据库、缓存、消息队列组合配置,YAML 一目了然
- 而纯单体小项目、或对接只认
.properties的老系统,继续用 properties 更稳妥 - 注意:IDEA 默认支持 YAML 语法高亮和校验;Eclipse 需要安装 YAML 插件
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











