YML
一、YML语法
1.约定
-
k: v 表示键值对关系,冒号后面必须有一个空格
-
使用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的
-
大小写敏感
-
缩进时不允许使用Tab键,只允许使用空格。
-
松散表示,java中对于驼峰命名法,可用原名或使用-代替驼峰,如java中的lastName属性,在yml中使用lastName或 last-name都可正确映射。
2.键值关系
对于键与值主要是看能否表示以下内容。普通的值(数字、字符串、布尔)、日期、对象、数组、集合等。
1 字符串默认不用加上单引号或者双绰号; 2 3 "": 双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思 4 5 name: "zhangsan \n lisi":输出;zhangsan \n lisi 6 7 '':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
日期
date: 2019/01/01
对象(属性和值)、Map(键值对)
在下一行来写对象的属性和值的关系,注意缩进 people: name: zhangsan age: 20 行内写法: people: {name:zhangsan,age: 20}
数组、list、set
用 - 表示数组中的一个元素
pets: - dog - pig - cat 行内写法: pets: [dog,pig,cat]
数组对象、list对象、set对象
peoples: - name: zhangsan age: 22 - name: lisi age: 20 - {name: wangwu,age: 18}
1 java代码示例 2 public class Person { 3 4 private String lastName; 5 private Integer age; 6 private Boolean boss; 7 8 //Spring @value数组示例 9 @Value("#{'${arrays}'.split(',')}") 10 private String[] arrays; 11 12 private Date birth; 13 private Map<String,Object> maps; 14 private List<Dog> lists; 15 private Dog dog; 16 private String[] arr; 17 } 18 public class Dog { 19 private String name; 20 private Integer age; 21 } 22 23 24 对应的yml 25 person: 26 boss: false 27 maps: 28 k1: v1 29 k2: 14 30 lists: 31 - name: d1 32 age: 2 33 - name: d2 34 age: 3 35 - {name: d3,age: 4} 36 birth: 2017/12/15 37 dog: 38 name: p_dog 39 age: 15 40 age: 13 41 last-name: 张三 42 arr: [s1,s2,s3] 43 arrays: 'a1,a2'
3.文档块
对于测试环境,预生产环境,生产环境可以使用不同的配置,如果只想写到一个文件中,yml与是支持的,每个块用 ---- 隔开
1 server: 2 port: 8081 3 spring: 4 profiles: 5 active: prod #激活对应的文档块 6 7 --- 8 server: 9 port: 8083 10 spring: 11 profiles: dev #指定属于哪个环境 12 13 14 --- 15 16 server: 17 port: 8084 18 spring: 19 profiles: prod #指定属于哪个环境
二、Yaml中特殊符号“| > |+ |-”的作用
"|",保留每行尾部的换行符\n。
">",删除每行尾部的换行符\n,则看似多行文本,则在程序中会将其视为一行。
1 include_newlines: | 2 exactly as you see 3 will appear these three 4 lines of poetry 5 6 fold_newlines: > 7 this is really a 8 single line of text 9 despite appearances
在">"符号应用的多行文本值中,所有换行符都会被视为空格,有两种方法都可以强制保留换行符:
1 fold_some_newlines: > 2 a 3 b # 在两行之间空一行 4 5 c 6 d 7 e # 在值前面再加一个空格 8 f 9 same_as: "a b\nc d\n e\nf\n"
"|+",保留每行尾部的换行符\n的同时,保留内容结尾处的换行符\n。
"|-",保留每行尾部的换行符\n的同时,删除内容结尾处的换行符\n。
1 s1: | 2 Foo 3 4 s2: |+ 5 Foo 6 7 s3: |- 8 Foo