一、yaml文件介绍

yml是YAML(YAML Ain’t Markup Language)语言的文件,以数据为中心,比properties、xml等更适合做配置文件

  • 相比properties文件更简洁,properties更平面化,yml更层次化
  • yml和xml相比,少了一些结构化的代码,使数据更直接,一目了然。

二、yaml不同类型写法

  1. String(字符串默认不加引号,单引号会转义特殊字符)

environments:
  str: hello yaml
  1. 布尔

environments:
  enabled: true
  1. 数值

environments:
  
  id: 123123
  1. 小数

environments:
  num: 22.11
  1. 日期(yyyy/MM/dd HH:mm:ss)

environments:
  time: 2021/01/01 10:20:12
  1. List

environments:
  list:
    - 1
    - 2
  1. set

environments:
  set: [set1,set2]
  1. map

environments:
  map: {key1: value1,key2: value2}
  1. 对象

environments:
  dev:
    url: https://dev.example.com
    name: Developer Setup
  1. 组合结构(例如:对象list)

environments:
  users:
    - url: 11111
      name: 22222
    - url: 33333
      name: 44444

三、对应实体

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.*;

@Data
@Configuration
@ConfigurationProperties(prefix = "environments")
public class YamlModel {

    private UrlModel dev;

    private String str;

    private Boolean enabled;

    private Integer id;

    private Date time;
    
    private Double num;

    private List<String> list = new ArrayList<>();
    
    private List<String> set = new ArrayList<>();

    private Map<String, String> map = new HashMap<>();

    private List<UrlModel> users = new ArrayList<>();

}

import lombok.Data;

@Data
public class UrlModel {

    private String url;
    private String name;
}

四、整体YML文件

environments:
  num: 22.11
  users:
    - url: 11111
      name: 22222
    - url: 33333
      name: 44444
  dev:
    url: https://dev.example.com
    name: Developer Setup
  map: {key1: value1,key2: value2}
  set: [set1,set2]
  list:
    - 1
    - 2
  time: 2021/01/01 10:20:12
  id: 123123
  enabled: true
  str: hello yaml

五、注意

  • 字符串可以不加引号,若加双引号则输出特殊字符,若不加或加单引号则转义特殊字符;
  • YAML是以空格缩进的程度来控制层级关系,但不能用tab键代替空格,大小写敏感;
  • 数组类型,短横线后面要有空格;对象类型,冒号后面要有空格;
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐