我的感受這篇文檔屬於"搬運工"性質能夠查看官方或者其餘的博客資料,會有一大堆的內容java
YAML語言的設計參考了JSON,XML和SDL等語言。YAML 強調以數據爲中心,簡潔易讀,編寫簡單。python
有意思的命名:spring
AML全稱是」YAML Ain’t a Markup Language」(YAML不是一種置標語言)的遞歸縮寫。
在開發的這種語言時,YAML 的意思實際上是:」Yet Another Markup Language」(還是一種置標語言)。json
雙引號""
:不會轉義字符串裏面的特殊字符,特殊字符做爲自己想表示的意思。數組
name: "123\n123" --------------------------- 輸出: 123 換行 123
若是不加引號
將會轉義特殊字符,當成字符串處理springboot
使用」或」「或不使用引號數據結構
value0: 'hello World!' value1: "hello World!" value2: hello World!
true
或false
表示。app
12 #整數 014 # 八進制整數 0xC #十六進制整數 13.4 #浮點數 1.2e+34 #指數 .inf空值 #無窮大
null
或~
表示spring-boot
使用 iso-8601 標準表示日期測試
date: 2018-01-01t16:59:43.10-05:00
在springboot中yaml文件的時間格式 date: yyyy/MM/dd HH:mm:ss
YAML 容許使用個感嘆號!
,強制轉換數據類型,單歎號
一般是自定義類型,雙歎號
是內置類型。
money: !!str 123 date: !Boolean true
內置類型列表
!!int # 整數類型 !!float # 浮點類型 !!bool # 布爾類型 !!str # 字符串類型 !!binary # 也是字符串類型 !!timestamp # 日期時間類型 !!null # 空值 !!set # 集合 !!omap,!!pairs # 鍵值列表或對象列表 !!seq # 序列,也是列表 !!map # 鍵值表
Map(屬性和值)(鍵值對)的形式:
key:(空格)v :表示一堆鍵值對,空格不可省略。
car: color: red brand: BMW
一行寫法
car:{color: red,brand: BMW}
至關於JSON格式:
{"color":"red","brand":"BMW"}
一組連詞線開頭的行,構成一個數組。
brand: - audi - bmw - ferrari
一行寫法
brand: [audi,bmw,ferrari]
至關於JSON
["auri","bmw","ferrari"]
|:使用|
標註的文本內容縮進表示的塊,能夠保留塊中已有的回車換行
value: | hello world! 輸出結果:hello 換行 world!
+
表示保留文字塊末尾的換行,-
表示刪除字符串末尾的換行。
value: | hello value: |- hello value: |+ hello 輸出:hello\n hello hello\n\n(有多少個回車就有多少個\n)
注意 「|」 與 文本之間須另起一行
>:使用 >
標註的文本內容縮進表示的塊,將塊中回車替換爲空格,最終鏈接成一行
value: > hello world! 輸出:hello 空格 world!
注意 「>」 與 文本之間的空格
使用 &
定義數據錨點(即要複製的數據),使用 *
引用錨點數據(即數據的複製目的地)
name: &a yaml book: *a books: - java - *a - python 輸出book: yaml 輸出books:[java,yaml,python]
注意*
引用部分不能追加內容
/** * 將配置文件中配置的每個屬性的值,映射到這個組件中 * @ConfigurationProperties:告訴SpringBoot將本類中的全部屬性和配置文件中相關的配置進行綁定; * prefix = "person":配置文件中哪一個下面的全部屬性進行一一映射 * * 只有這個組件是容器中的組件,才能容器提供的@ConfigurationProperties功能; * */ @Component //實例化 @ConfigurationProperties(prefix = "person")//yaml或者properties的前綴 public class Person { private String name; private Integer age; private Boolean flag; private Date birthday; private Map<String,Object> maps; private List<Object> tempList; private Dog dog; //省略getter和setter以及toString方法
咱們能夠導入配置文件處理器,之後編寫配置就有提示了,@ConfigurationProperties
IDE會提示打開在線的幫助文檔,配置依賴以下:
<!--導入配置文件處理器,配置文件進行綁定就會有提示--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
person: name: 胖先森 age: 18 flag: false birthday: 2018/12/19 20:21:22 #Spring Boot中時間格式 maps: {bookName: "西遊記",author: '吳承恩'} tempList: - 紅樓夢 - 三國演義 - 水滸傳 dog: dogName: 大黃 dogAge: 4
在test中進行測試以下
@RunWith(SpringRunner.class) @SpringBootTest public class Demo03BootApplicationTests { @Autowired private Person p1; @Test public void contextLoads() { System.out.println(p1); } }
輸出結果爲:Person{name='胖先森', age=18, flag=false, birthday=Wed Dec 19 20:21:22 CST 2018, maps={bookName=西遊記, author=吳承恩}, tempList=[紅樓夢, 三國演義, 水滸傳], dog=Dog{dogName='大黃', dogAge=4}}
person123.name=劉備 person123.age=20 person123.birthday=2018/12/19 20:21:22 person123.maps.bookName=水滸傳 person123.maps.author=羅貫中 person123.temp-list=一步教育,步步爲贏 person123.dog.dogName=小白 person123.dog.dogAge=5
java代碼修改前綴
@Component //實例化 @ConfigurationProperties(prefix = "person123")//yaml或者properties的前綴 public class Person { private String name; private Integer age; private Boolean flag; private Date birthday; private Map<String,Object> maps; private List<Object> tempList; private Dog dog; //省略getter和setter以及toString方法
在test中進行測試以下
@RunWith(SpringRunner.class) @SpringBootTest public class Demo03BootApplicationTests { @Autowired private Person p1; @Test public void contextLoads() { System.out.println(p1); } }
輸出結果爲:Person{name='����', age=20, flag=null, birthday=Wed Dec 19 20:21:22 CST 2018, maps={bookName=ˮ䰴�, author=�޹���}, tempList=[һ������, ����ΪӮ], dog=Dog{dogName='��', dogAge=5}}
屬性文件中文亂碼問題