Yaml语法入门学习

YAML:以数据为中心,比json、xml等更适合做配置文件

1、基本语法规则:

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格。
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • 垂直对齐层次关系
  • 注释为 “ # ” 单行注释

 

#YAML格式,注释为 “ # ” 单行注释
environments:
    dev:
        url: http://dev.bar.com
        name: Developer Setup
    prod:
        url: http://foo.bar.com
        name: My Cool App
my:
    servers:
        - dev.bar.com
        - foo.bar.com

2、支持的数据结构

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  • 字面量(数字、字符串、布尔值):单个的、不可再分的值

 

 

3、具体写法

 

  • 字面量(数字、字符串、布尔值,还有map键值类似) 

k: v :字面量直接写,字符串默认不用加上单引号或者双引号 ;

双引号:会转义字符串里边的特殊字符;

单引号:不会转义特殊字符,特殊字符会直接显示出来。

 

name: zhangsan
age: 20
isBoss: false
  • 数组 (或者容器,如集合)

多行写法使用 数组名:

- 值来表示数组中的一个元素,需要注意缩进;

单行使用 数组名: [值,值]  来表示一个数组(中括号)

 

#多行结构
friends:
 - zhangsan
 - lisi
 - wangwu

#单行结构
friend: [zhangsan,lisi,wangwu]
  • 对象 

多行写法:key:value的形式,使用多行写法需要注意缩进 

单行写法:使用{key:value}的形式书写(大括号)

 

#多行结构
friend:
 name:zhangsan
 age:20

#单行结构
friend:{name: zhangsan,age: 20}

行内写法: k: v, 容器名: [Set/List/数组]; {map, 对象类型的属性}

中括号可省,大括号不可省

 

4、.properties文件和.yml文件之间的不同

 

  • .properties文件中的写法

 

person.last-name=\u674E\u56DB
person.age=12
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=dog
person.dog.age=1
  • .yml文件中的写法

 

person:
  last-name: zhangsan
  age: 20
  birth: 2017/12/15
  boss: false
  maps:{key1:value1,key2:value2} 
  lists:[a,b,c]
  dog:
   name: dog
   age: 1

 

5、通过yaml给对象注入值:

注入值:

yml:

 

student:
name:   zs
age:    23
sex:     true
birthday:   2019/11/26

绑定:

@Component //将此Javabean

@ConfigurationProperties(prefix="student")

public class Student{

...

...

}

补充:

@ConfigurationProperties(prefix="student")                              @Value("xx")          二者可以互补

                        批量注入                                                                单个注入

                        优先级高;

                        支持松散语法                                                         不支持松散语法

                        不支持SpEL                                                            支持SpEL

                        支持JSR303数据校验                                             不支持JSR303数据校验

                        支持注入复杂类型                                                    不支持复杂类型

 

6、@PropertySource:默认会加载application.properties/application.yml文件中的数据;例如@PropertySource(value={"classpath:conf.properties"})加载conf.properties,但是,@PropertySource只能加载properties,不能加载yml。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值