YAML語法入門

一、基本格式

  • 用縮進表示層級,左對齊的數據屬於同一層級;
  • K:(空格)v 表示一個鍵值對
  • 大小寫敏感
  • "#"表示註釋
server:
  port: 8081

spring:
#這是註釋
  datasource:
    url: jdbc:oracle:thin:@localhost:1521:orcl
    driver-class-name: oracle.jdbc.driver.OracleDriver
    username: ABC
    password: ABC

二、數據類型

yml支持如下數據類型spring

  • 對象:鍵值對的集合,包括:map、字典
  • 數組:一組按次序排列的值,包括:list和set
  • 純量(scalars):即字面量,單個的、不可再分的值。包括:數字,字符串,布爾

三、設置方式

3.一、純量

屬性設置:json

property:
  #字符串通常狀況下不須要使用引號
  str0: 字符串
  #使用雙引號時
  str1: "特殊轉移字符\n被雙引\t號包含時"
  #使用單引號時
  str2: '特殊轉移字符\n被單引\t號包\r含時'
  num: 3.25 #數字
  bool: true #布爾值
  date: 2021/03/03 #日期
  time: 2021/03/03 17:12:35 # 時間
  birth: 2021-03-03 17:12:35

實體類:數組

@Component
@ConfigurationProperties(prefix = "property")
public class PropertyObject {
    private String str0;
    private String str1;
    private String str2;
    private String str3;
    private BigDecimal num;
    private boolean bool;
    private Date date;
    private Date time;

    @JsonFormat(timezone = "GMT+8",pattern="yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private LocalDateTime birth;
}

輸出:oracle

{"str0":"字符串","str1":"特殊轉移字符\n被雙引\t號包含時","str2":"特殊轉移字符\\n被單引\\t號包\\r含時","str3":null,"num":3.25,"bool":true,"date":"2021-03-02T16:00:00.000+00:00","time":"2021-03-03T09:12:35.000+00:00","birth":"2021-03-03 17:12:35"}
3.二、數組、list、set

屬性設置:url

property:
    #數組 多行寫法,以 「- 值」 表示一個元素
    ints:
      - 1
      - 2
      - 3
      - 4
    # 數組,單行寫法,與正常初始化一個數組同樣
    strings: [abc,err,ok]
    list: [123,654,3.25,euuu]
    set:
      - abc
      - yue
      - ok

實體類:scala

@Component
@ConfigurationProperties(prefix = "property")
public class PropertyObject {
    private int[] ints;
    private String[] strings;
    private List list;
    private Set set;
}

輸出:code

{"ints":[1,2,3,4],"strings":["abc","err","ok"],"list":[123,654,3.25,"euuu"],"set":["abc","yue","ok"]}
3.三、對象、map

屬性設置:orm

property:
  #單行寫法
  map: {abc: abc,sks: 123}
  #多行寫法
  person:
    name: 張三
    age: 25
  people:
    - {name: lisi,age: 13}
    - {name: 金士頓,age: 24}

實體類:server

@Component
@ConfigurationProperties(prefix = "property")
public class PropertyObject {
    private Map map;
    private Person person;
    private List<Person> people;
}

輸出:對象

{"map":{"abc":"abc","sks":123},"person":{"name":"張三","age":25},"people":[{"name":"lisi","age":13},{"name":"金士頓","age":24}]}
3.四、錨點與引用

yml能夠經過 & 錨點和 ***** 別名,實現值引用

& 用來創建錨點(defaults),<< 表示合併到當前數據,***** 用來引用錨點。

屬性設置:

property:
  person: &zhangsan
    name: 張三
    age: 25
  person2: &p2
    <<: *zhangsan
  people:
    - {name: lisi,age: 13}
    - {name: 金士頓,age: 24}
    - <<: *zhangsan
    - <<: *p2

實體類:

@Component
@ConfigurationProperties(prefix = "property")
public class PropertyObject {
    private Person person;
    private Person person2;
    private List<Person> people;
}

輸出:

{"person":{"name":"張三","age":25,"list":null},"person2":{"name":"張三","age":25,"list":null},"people":[{"name":"lisi","age":13,"list":null},{"name":"金士頓","age":24,"list":null},{"name":"張三","age":25,"list":null},{"name":"張三","age":25,"list":null}]}
相關文章
相關標籤/搜索