yaml 簡單使用

什麼是 YAML

YAML 可以視爲是 JSON 的一個超集,是一種方便的定義層次配置數據的格式,結構層次上清晰明瞭,配置簡單易讀、易用。


YAML 的基本規則

  • 大小寫敏感
  • 使用縮進表示層級關係
  • 禁止使用tab縮進,只能使用空格
  • 縮進長度沒有限制,只要元素對齊就表示這些元素屬於一個層級
  • 使用#表示註釋
  • 字符串可以不用引號標註

YAML 支持的數據結構

使用 : 表示一個鍵值對,對齊的縮進表示同一個map,同時也表示一個對象

# person.name person.age person.weight person.height
person:
 name: ke
 age: 22
 weight: 60.0
 height: 170.0
 
# person : {name : ke,age : 22,weight : 60.0,height : 170.0}

使用 {} 用 JSON格式也可以達到表達 map 的效果

person: {name: ke,age: 22,weight: 60.0,height: 170.0}

使用 - 來表示一個數組

person:
 name: ke
 age: 22
 weight: 60.0
 height: 170.0
 brothers:
  - Jack
  - Jim
  - John

使用 [ ] 同樣可以用來表示一個數組

person: {name: ke,age: 22,weight: 60.0,height: 170.0,brothers: [Jack,Jim,John]}

使用 | 來表示文字塊

word: |
  This
  is
  a
  word

使用 > 告訴YAML編譯器給所有新行加上條紋,並將輸入的文本作爲一個長行處理


SpringBoot 中的使用

application.yml 中的 spring.profiles.active 中指定使用環境

# spring.profiles.active
spring:
  profiles:
    active: dev

SpringBoot 會去調用對應的yml文件,調用規則爲 application-activeValue.yml (其中activeValue指的是spring.profiles.active 指定的值),例如,active是dev,則去使用的配置文件是 application-dev.yml,如果active是test,則使用的配置文件是 application-test.yml

指定使用環境 yml 文件,如果有屬性和 applicatioin.yml 重複,則使用環境的 yml文件會覆蓋 application.yml文件

#application.yml
spring:
  profiles:
    active: test


test: testString


#application-test.yml
test: testtesttest

# 此時SpringBoot中 test 的值是 testtesttest

注入一個Bean

package com.zyy.boot.bean;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@Data
@ConfigurationProperties(value = "person")
public class Person {

    private String name;

    private Integer age;

    private Double weight;

    private Double height;

    private String[] brothers;

}

使用 @Value 獲取配置信息

package com.zyy.boot.controller;

import com.zyy.boot.bean.Person;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
@Slf4j
public class TestController {

    @Value("${test}")
    private String testString;

    @Value("${person.name}")
    private String name;

    @Autowired
    private Person person;


    @RequestMapping("test")
    public String test(){
        // testtesttest
        log.info(testString);
        // ke
        log.info("{}",name);
         // person : Person(name=ke, age=22, weight=60.0, height=170.0, brothers=[Jack, Jim, John])
        log.info("person : {}",person); 
        return testString;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章