SpringBoot2.x基础篇:使用YAML代替Properties的对应配置
YAML是一种用于指定层次结构配置数据的便捷格式,SpringBoot内部通过集成SnakeYAML来支持解析,那我们如果来使用YAML格式来代替Properties,我们需要了解每一种Properties对应YAML的配置代替方式。
推荐阅读
普通配置
普通的方式比较简单直接,不存在数组、集合、子类等相关配置,我们通过Properties方式编写了如下的配置内容:
1 | system.config.max-value=100 |
那这种方式对应的YAML配置是什么样子的呢?
如下所示:
1 | system: |
这两种方式对比之下,
YAML层次感鲜明,更直观的查看配置信息,而Properties这种方式配置前缀相对来说是冗余的,如果配置前缀过长,每一行的配置内容则会更长。
List配置
如果你需要添加List/Set/Array类型的配置信息,使用Properties方式编写如下所示:
1 | system.config.ports[0]=8080 |
注意事项:配置的索引从0开始。
对应上面配置的YAML实现如下所示:
1 | system: |
无论是Properties还是YAML格式,这种List的配置内容都可以通过如下的方式获取:
1 |
|
List内实体配置
如果你的List内不是基本数据类型,而是一个实体类,使用Properties的配置方式如下所示:
1 | system.users[0].username=admin |
其实跟上面的List配置差不多,不过如果你需要配置每一个索引内字段的值,就要一一指定配置值。
对应上面的YAML实现如下所示:
1 | system: |
每一个
-其实代表集合内的一个元素。
获取List实体配置时我们可以通过如下的方式:
1 |
|
YAML缺点
一种方案的诞生是为了解决相应的问题,虽然说存在既有道理,但是每一种方案也不是完美的都有自身的缺点。
下面简单说说YAML的缺点:
- 配置时缩进要特别注意,如果存在空格缩进对应不齐就会出现问题
- 在
SpringBoot内无法通过@PropertySource注解加载YAML文件。
SpringBoot2.x基础篇:使用YAML代替Properties的对应配置
https://blog.minbox.org/spring-boot-basic-using-yaml-instead-of-properties.html

OAuth vs SAML vs OpenID
