在 Spring Boot 的配置文件 application.yml 中,我们经常需要配置数组参数,例如:

array:
  - "aaa"
  - "bbb"
  - "ccc"

这是最常见的写法:array 是一个 key,对应的值是一个数组,数组中的每个元素用 - 表示,前面通过 缩进 来表明层级关系。

但是,很多人会有疑问:如果把每个 - 前面的 2 个空格去掉,会不会有问题?

一、两种写法对比

常见写法(推荐,2 空格缩进)

array:
  - aaa
  - bbb
  - ccc

去掉缩进的写法(合法但不推荐)

array:
- aaa
- bbb
- ccc

二、YAML 的语法规则

YAML 语法规定:

  • - 表示数组的一个元素。
  • 缩进的作用是标识层级关系。
  • 只要缩进 一致,就不会报错。
  • 并没有强制要求缩进必须是 2 个空格,甚至 0 缩进在某些场景下也成立。

因此,第二种写法虽然看起来怪异,但在 YAML 语法上依然是合法的。

三、Spring Boot 的解析效果

无论哪种写法,Spring Boot 解析的结果完全一致:

绑定到 Java 代码时:

@Value("${array}")
private List<String> array;

或者通过 @ConfigurationProperties 注解,都能得到相同的结果:

[aaa, bbb, ccc]

四、推荐的写法

虽然两种写法都能正常运行,但业界普遍推荐使用 2 空格缩进,原因有三点:

  1. 可读性更好:层级关系更清晰。
  2. 与主流 YAML 风格一致:避免团队成员阅读困惑。
  3. 兼容性更强:部分工具或编辑器在格式化 YAML 时默认使用 2 空格缩进。

因此,推荐使用如下写法:

array:
  - aaa
  - bbb
  - ccc

五、总结

  • 去掉缩进依然能被 Spring Boot 正确解析,结果没有区别。
  • 缩进的目的是增强可读性,而非语法硬性要求。
  • 为了规范与团队协作,推荐保持 2 空格缩进 的风格。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注