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 + '}';
    }
}
posted @ 2018-12-22 12:22  小朋友写代码  阅读(451)  评论(0编辑  收藏  举报