1. 程式人生 > >YAML語法

YAML語法

img config 寫法 processor inf ima artifact 關系 -s

一、基本語法

k:(空格)v:表示一對鍵值對(空格必須有);
以空格的縮進來控制層級關系;只要是左對齊的一列數據,都是同一個層級的

server:
  port: 8081
  path: /hello

二、值的寫法

1、字面量:普通的值(數字,字符串,布爾)

k: v:字面直接來寫;
字符串默認不用加上單引號或者雙引號;
"":雙引號;不會轉義字符串裏面的特殊字符;特殊字符會作為本身想表示的意思
  name: "zhangsan \n lisi":輸出;zhangsan 換行 lisi
‘‘:單引號;會轉義特殊字符,特殊字符最終只是一個普通的字符串數據
  name: ‘zhangsan \n lisi’:輸出;zhangsan \n lisi

2、對象、Map(屬性和值)(鍵值對)

k: v:在下一行來寫對象的屬性和值的關系;註意縮進
對象還是k: v的方式

friends:
  lastName: zhangsan
  age: 20

行內寫法:

friends: {lastName: zhangsan,age: 18}

3、數組(List、Set)

用- 值表示數組中的一個元素

pets:
 ‐ cat
 ‐ dog
 ‐ pig

行內寫法

pets: [cat,dog,pig]

三、例子

1、javaBean

/**
* 將配置文件中配置的每一個屬性的值,映射到這個組件中
* @ConfigurationProperties:告訴SpringBoot將本類中的所有屬性和配置文件中相關的配置進行綁定;
* prefix = "person":配置文件中哪個下面的所有屬性進行一一映射
*
* 只有這個組件是容器中的組件,才能容器提供的@ConfigurationProperties功能;
*
*/ @Component @ConfigurationProperties(prefix = "person")   public class Person {   private String lastName;   private Integer age;   private Boolean boss;   private Date birth;   private Map<String,Object> maps;   private List<Object> lists;   private Dog dog;

2、application.yml

person:
  lastName: zhangsan
  age: 18
  boss: false
  birth: 2017/12/12
  maps: {k1: v1,k2: v2}
  lists: [lisi,wangwu]
  dog:
    name: 小狗
    age: 2

3、pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

4、測試代碼

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootHelloworldApplicationTests {

    @Autowired
    private Person person;

    @Test
    public void contextLoads() {
        System.out.println(person);
    }

}

四、相同的配置寫在 properties 文件中也可以 ( 操作和 yml 一樣 )

1、application.properties

person.last-name=張三
person.age=18
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=dog
person.dog.age=15

2、解決 properties 可能亂碼問題

技術分享圖片

YAML語法