SpringBoot中YAML語(yǔ)法及幾個(gè)注意點(diǎn)說(shuō)明
YAML語(yǔ)法及幾個(gè)注意點(diǎn)
yaml后綴名可以是.yml或者.yaml
對(duì)于語(yǔ)法注意的一點(diǎn)是固定的縮進(jìn)來(lái)控制它的層級(jí)關(guān)系,它的key: value形式必須要要在中間有空格
實(shí)體類(lèi)(setter,getter,toString省略)如下
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private List<String> hobbies;
private Map<String,Object> map;
private Dog dog;
}在使用了@ConfigurationProperties注解過(guò)后idea會(huì)給你發(fā)出警告,可以不管,但是這樣你在yml中配置時(shí)就沒(méi)有提示功能,所以點(diǎn)進(jìn)警告,這時(shí)你會(huì)發(fā)現(xiàn)可能出現(xiàn)網(wǎng)頁(yè)找不到的情況,這時(shí)候你只需要將網(wǎng)址欄的版本降低即可,如下

將框中的內(nèi)容放進(jìn)pom,然后重新運(yùn)行項(xiàng)目,在yaml中就會(huì)對(duì)你自己寫(xiě)的標(biāo)注了@ConfigurationProperties的類(lèi)有了代碼提示功能
public class Dog {
private String name;
private Integer age;
}
application.yml配置文件進(jìn)行值的注入
person:
last-name: 張三
age: 25
hobbies:
- 籃球
- 跑步
- 吉他
map: {k1: 你好,k2: 世界}
dog:
name: 狗東西
age: 10
列表可以用上面的形式也可以用下面的形式,看清楚光標(biāo)處有空格,對(duì)象類(lèi)型就可以用{},如下面的Map

yaml的松散綁定
Java中l(wèi)astName的駝峰命名法,yaml中可以用其他的形式來(lái)表示。如
last_name last-name lastName LASTNAME
首次玩這個(gè)如果想在測(cè)試類(lèi)里面測(cè)試,有可能你會(huì)出現(xiàn)運(yùn)行不了一直卡在Maven。。。的框里面,解決方案:我的錯(cuò)誤收集筆記
YAML語(yǔ)法簡(jiǎn)易入門(mén)
可以查看官方或者其他的博客資料,會(huì)有一大堆的內(nèi)容
YAML語(yǔ)言的設(shè)計(jì)參考了JSON,XML和SDL等語(yǔ)言。YAML 強(qiáng)調(diào)以數(shù)據(jù)為中心,簡(jiǎn)潔易讀,編寫(xiě)簡(jiǎn)單。
有意思的命名:
AML全稱是”YAML Ain’t a Markup Language”(YAML不是一種置標(biāo)語(yǔ)言)的遞歸縮寫(xiě)。 在開(kāi)發(fā)的這種語(yǔ)言時(shí),YAML 的意思其實(shí)是:”Yet Another Markup Language”(仍是一種置標(biāo)語(yǔ)言)。
語(yǔ)法特點(diǎn)
- 大小寫(xiě)敏感
- 通過(guò)縮進(jìn)表示層級(jí)關(guān)系
- 禁止使用tab縮進(jìn),只能使用空格鍵 (個(gè)人感覺(jué)這條最重要)
- 縮進(jìn)的空格數(shù)目不重要,只要相同層級(jí)左對(duì)齊即可
- 使用#表示注釋
支持的數(shù)據(jù)結(jié)構(gòu)
- 對(duì)象:鍵值對(duì)的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
- 純量(scalars):?jiǎn)蝹€(gè)的、不可再分的值
雙引號(hào)和單引號(hào)的區(qū)分
雙引號(hào)"":不會(huì)轉(zhuǎn)義字符串里面的特殊字符,特殊字符作為本身想表示的意思。
yamlname: "123\n123"
輸出: 123 換行 123
如果不加引號(hào)將會(huì)轉(zhuǎn)義特殊字符,當(dāng)成字符串處理
值的寫(xiě)法
1.字符串
使用”或”“或不使用引號(hào)
yamlvalue0: 'hello World!' value1: "hello World!" value2: hello World!
2.布爾值
true或false表示。
3.數(shù)字
yaml12 #整數(shù) 014 # 八進(jìn)制整數(shù) 0xC #十六進(jìn)制整數(shù) 13.4 #浮點(diǎn)數(shù) 1.2e+34 #指數(shù) .inf空值 #無(wú)窮大
4.空值
null或~表示
5.日期
使用 iso-8601 標(biāo)準(zhǔn)表示日期
yamldate: 2018-01-01t16:59:43.10-05:00
在springboot中yaml文件的時(shí)間格式 date: yyyy/MM/dd HH:mm:ss
6.強(qiáng)制類(lèi)型轉(zhuǎn)換(了解)
YAML 允許使用個(gè)感嘆號(hào)!,強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類(lèi)型,單嘆號(hào)通常是自定義類(lèi)型,雙嘆號(hào)是內(nèi)置類(lèi)型。
yamlmoney: !!str 123 date: !Boolean true
內(nèi)置類(lèi)型列表
yaml!!int # 整數(shù)類(lèi)型? !!float # 浮點(diǎn)類(lèi)型? !!bool # 布爾類(lèi)型? !!str # 字符串類(lèi)型? !!binary # 也是字符串類(lèi)型? !!timestamp # 日期時(shí)間類(lèi)型? !!null # 空值? !!set # 集合? !!omap,!!pairs # 鍵值列表或?qū)ο罅斜? !!seq # 序列,也是列表 !!map # 鍵值表
7.對(duì)象(重點(diǎn))
Map(屬性和值)(鍵值對(duì))的形式: key:(空格)v :表示一堆鍵值對(duì),空格不可省略。
yamlcar: ? ? color: red ? ? brand: BMW
一行寫(xiě)法
yamlcar:{color: red,brand: BMW}相當(dāng)于JSON格式:
json{"color":"red","brand":"BMW"}8.數(shù)組
一組連詞線開(kāi)頭的行,構(gòu)成一個(gè)數(shù)組。
yamlbrand: ? ?- audi ? ?- bmw ? ?- ferrari
一行寫(xiě)法
yamlbrand: [audi,bmw,ferrari]
相當(dāng)于JSON
json["auri","bmw","ferrari"]
9.文本塊
|:使用|標(biāo)注的文本內(nèi)容縮進(jìn)表示的塊,可以保留塊中已有的回車(chē)換行
yamlvalue: | ? ?hello ? ?world!
輸出結(jié)果:hello 換行 world!
+表示保留文字塊末尾的換行,-表示刪除字符串末尾的換行。
yamlvalue: | hello value: |- hello value: |+ hello
輸出:hello\n hello hello\n\n(有多少個(gè)回車(chē)就有多少個(gè)\n)
注意 “|” 與 文本之間須另起一行
:使用 > 標(biāo)注的文本內(nèi)容縮進(jìn)表示的塊,將塊中回車(chē)替換為空格,最終連接成一行
yamlvalue: > hello world!
輸出:hello 空格 world!
注意 “>” 與 文本之間的空格
10.錨點(diǎn)與引用
使用 & 定義數(shù)據(jù)錨點(diǎn)(即要復(fù)制的數(shù)據(jù)),使用 * 引用錨點(diǎn)數(shù)據(jù)(即數(shù)據(jù)的復(fù)制目的地)
yamlname: &a yaml book: *a books:? ? ?- java ? ?- *a ? ?- python
輸出book: yaml
輸出books:[java,yaml,python]
注意*引用部分不能追加內(nèi)容
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot YAML語(yǔ)法基礎(chǔ)詳細(xì)整理
- SpringBoot yaml語(yǔ)法與JRS303校驗(yàn)超詳細(xì)講解
- SpringBoot yaml語(yǔ)法與數(shù)據(jù)讀取操作詳解
- Springboot整合freemarker和相應(yīng)的語(yǔ)法詳解
- Java springboot yaml語(yǔ)法注解
- SpringBoot中的yaml語(yǔ)法及靜態(tài)資源訪問(wèn)問(wèn)題
- SpringBoot SpEL語(yǔ)法掃盲與查詢手冊(cè)的實(shí)現(xiàn)
- springboot常用語(yǔ)法庫(kù)的基本語(yǔ)法
相關(guān)文章
基于java變量和作用域以及成員變量的默認(rèn)初始化(詳解)
下面小編就為大家介紹一下java變量和作用域以及成員變量的默認(rèn)初始化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助2017-11-11
SpringBoot?web靜態(tài)資源映射實(shí)現(xiàn)步驟詳解
在springBoot中的靜態(tài)資源的映射是通過(guò)SpringMVC中的resourceHttpRequestHandler來(lái)進(jìn)行實(shí)現(xiàn)的。在該請(qǐng)求映射器中默認(rèn)規(guī)定了,SpringBoot會(huì)將classPath或者ServletContext下的/static?(/public、/resources?或?/META-INF/resources)目錄中,存放靜態(tài)資源2022-09-09
SpringBoot詳細(xì)講解通過(guò)自定義classloader加密保護(hù)class文件
這篇文章主要介紹了SpringBoot通過(guò)自定義classloader加密class文件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
Java NumberFormat格式化float類(lèi)型的bug
今天小編就為大家分享一篇關(guān)于Java NumberFormat格式化float類(lèi)型的bug,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10
Java設(shè)計(jì)模式之創(chuàng)建者模式詳解
這篇文章主要介紹了Java設(shè)計(jì)模式之創(chuàng)建者模式詳解,創(chuàng)建者模式,顧名思義,就是提供友好的創(chuàng)建對(duì)象的方式?,對(duì)象都是?new?出來(lái)的,但是在一些情況下,這種方式不是很友好,首先,它不夠直觀,需要的朋友可以參考下2023-08-08
并發(fā)編程ConcurrentLinkedQueue示例詳解
這篇文章主要為大家介紹了并發(fā)編程ConcurrentLinkedQueue使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

