赞
踩
YAML (YAML Ain’t a Markup Language)YAML不是一种标记语言,通常以.yml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,一种专门用来写配置文件的语言。
YAML试图用一种比XML更敏捷的方式,来完成XML所完成的任务。
例如:
student:
name: sangeng
age: 15
<student>
<name>sangeng</name>
<age>15</age>
</student>
YAML易于人们阅读。
更加简洁明了
k: v 表示键值对关系,冒号后面必须有一个空格
使用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的
大小写敏感
缩进时不允许使用Tab键,只允许使用空格。
java中对于驼峰命名法,可用原名或使用-代替驼峰,如java中的lastName属性,在yml中使用lastName或 last-name都可正确映射。
yml中注释前面要加#
k: v:字面量直接写;
字符串默认不用加上单引号或者双绰号;
“”: 双引号;转意字符能够起作用
name: “sangeng \n caotang”:输出;sangeng 换行 caotang
‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name1: sangeng
name2: 'sangeng \n caotang'
name3: "sangeng \n caotang"
age: 15
flag: true
date: 2019/01/01
多行写法:
在下一行来写对象的属性和值的关系,注意缩进
student:
name: zhangsan
age: 20
行内写法:
student: {name: zhangsan,age: 20}
用- 值表示数组中的一个元素
多行写法:
pets:
- dog
- pig
- cat
行内写法:
pets: [dog,pig,cat]
students:
- name: zhangsan
age: 22
- name: lisi
age: 20
- {name: wangwu,age: 18}
可以使用 ${key:defaultValue} 的方式来赋值,若key不存在,则会使用defaultValue来赋值。
例如
server:
port: ${myPort:88}
myPort: 80
注意使用此注解只能获取简单类型的值(8种基本数据类型及其包装类,String,Date)
student:
lastName: sangeng
@RestController
public class TestController {
@Value("${student.lastName}")
private String lastName;
@RequestMapping("/test")
public String test(){
System.out.println(lastName);
return "hi";
}
}
注意:加了@Value的类必须是交由Spring容器管理的
yml配置
student:
lastName: sangeng
age: 17
student2:
lastName: sangeng2
age: 15
在类上添加注解@Component 和@ConfigurationProperties(prefix = “配置前缀”)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
private String lastName;
private Integer age;
}
从spring容器中获取Student对象
@RestController
public class TestController {
@Autowired
private Student student;
@RequestMapping("/test")
public String test(){
System.out.println(student);
return "hi";
}
}
注意事项:要求对应的属性要有set/get方法,并且key要和成员变量名一致才可以对应的上。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。