Springboot官网学习(6、深入Springboot之外部化配置【三使用yaml代替properties】)

使用yaml代替properties
这是官网的原话:Using YAML Instead of Properties

既然官方都说了,使用yaml来代替properties,证明一定有它的好处或者便捷之处

yaml是JSON的超集,因此是一种用于指定层次结构配置数据的便捷格式

从这句话看出,yaml有层次结构的,看起来容易理解,便捷,可能比Propertis写得少
Springboot自带支持yaml格式的文件,只有在classpath(src/man/resources)下面有。

Springboot提供了两个类来加载yaml文件:YamlPropertiesFactoryBean和YamlMapFactoryBean
那么他们有什么区别呢?
举个简单的例子:(很有层级感吧)

environments:
    dev:
        url: https://dev.example.com
        name: Developer Setup
    prod:
        url: https://another.example.com
        name: My Cool App

这种格式是用YamlPropertiesFactoryBean来进行加载的,
那么上面的属性就会变成

environments.dev.url=https://dev.example.com
environments.dev.name=Developer Setup
environments.prod.url=https://another.example.com
environments.prod.name=My Cool App

这个加载出来就和properties文件格式一样了,但是作为开发者写的时候,是不是少写了很多不不要的配置。
(properties这样看起来又冗余,又不容易找到自己想要的,而且位置可以随意乱放,这样导致在查找起来很不方便)

my:
   servers:
       - dev.example.com
       - another.example.com

像这种格式的,就需要用YamlMapFactoryBean来进行加载
它最终加载的结果是:

my.servers[0]=dev.example.com
my.servers[1]=another.example.com

这种格式也就是说,他一个属性会有两个值,这种可能后面用作切换是非常有用的
比如开发模式,测试模式,开发模式切换等。

最后说一下yaml的一些细节:
yaml格式的文件,后缀名可以是yaml,也可以是yml,两种都一样。

server:
  servlet:
    context-path: /
  port: 8080

如上面,context-path: / 像这种,后面带值的,冒号后面一定要打一个空格,如果不打空格,那么他会连冒号一起当成一个属性,所以这个细节要注意,像server或者servlet后面只有一个冒号没有值的,可以不打空格

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值