YAML用法
简介
YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写,表示YAML不是一种标记语言。
YAML是专门用来写配置文件的语言,以数据为数据中心,简洁强大,比xml、properties更适合做配置文件。
语法规则
- 大小写敏感
- 使用缩进表示层级关系
- 不能使用Tab 键进行缩进,必须使用空格键
- 缩进的空格数目不重要妹纸要相同的层级的元素左侧要对齐
- #表示注释
- 值前面必须有个空格
基本用法
支持三种用法
字面量
普通的值、如数字、字符串、布尔值
number: 12.4
str: hello
name :"tom cruise" # 如果字符串包含空格或者特俗字符,则必须使用引号括起来。
对象
也称为映射的Map,包含属性和值
- 写法1
user:
name: tom
age: 12
sex: male
- 写法2 行内写法
user:{name: tom,age: 10,sex: male}
数组 如List、Set等
- 写法1:一组短横线开头的行
names:
- tom
- jack
- alice
- 写法2:行内写法
name:{tom,jack,alice}
使用 yml 文件为属性注入值
application.yml
user:
username: admin
age: 18
status: true
birthday: 2018/02/20
address:
province: 河北省
city: 唐山
lists:
- list1
- list2
- list3
map: {k1: v1,k2: v2,k3: v3}
User
//将当前类添加到容器中
@Component
//默认读取全局配置文件获取值,将当前类中的所有属性与配置文件中的user进行绑定
@ConfigurationProperties(prefix = "user")
public class User implements Serializable {
private String username;
private Integer age;
private Boolean status;
private Date birthday;
private Address address;
private List<String> lists;
public Map<String,Object> map;
public List<String> getLists() {
return lists;
}
public void setLists(List<String> lists) {
this.lists = lists;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Boolean getStatus() {
return status;
}
public void setStatus(Boolean status) {
this.status = status;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "User{" + "username='" + username + '\'' + ", age=" + age + ", status=" + status + ", birthday="
+ birthday + ", Province=" + address.getProvince() + ", City=" + address.getCity()+ ", lists=" + lists + ", map=" + map + '}';
}
}