在 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 空格缩进,原因有三点:
- 可读性更好:层级关系更清晰。
- 与主流 YAML 风格一致:避免团队成员阅读困惑。
- 兼容性更强:部分工具或编辑器在格式化 YAML 时默认使用 2 空格缩进。
因此,推荐使用如下写法:
array: - aaa - bbb - ccc
五、总结
- 去掉缩进依然能被 Spring Boot 正确解析,结果没有区别。
- 缩进的目的是增强可读性,而非语法硬性要求。
- 为了规范与团队协作,推荐保持 2 空格缩进 的风格。