javascript
Spring Boot —— YAML配置文件
引言
首先,YAML并不是僅僅可以使用在Java項目中,它是一種類似于json結構的標記語言,可以為所有的編程語言服務。它強調更直觀的層級表示,比較適合描述配置文件中的層級關系。
Spring Boot可以識別后綴名為".properties"或“.yaml”或“.yml” 的全局配置文件。以yaml或yml為后綴的配置文件都是YAML文件。
默認的配置文件的優先級如下:
file:./config/? ? ? ?
file:./? ? ? ? ? ? ? 項目根路徑下
classpath:/config/
classpath:/? ? ? 項目resources文件夾下
一、與其他配置格式的比較
與其他配置文件的格式比較,yaml的表達方式既有直觀突出的層級結構,同時又不會冗余重復:
.properties配置方式:
?.xml配置方式:
.yml配置方式:
?不難看出,兼顧層級結構而又簡潔明快的配置方式當然YAML是最好的選擇。
二、YAML基本語法
2.1 表達式
YAML用一個鍵值對來表示每個屬性(大小寫敏感),類似于json但卻不需要大括號,用冒號分割Key和Value的同時需要在冒號后面加入一個強制的空格:
key: value
舉例:
2.2 層級表示
YAML采用換行并縮進的方式來表達父節點與子節點、對象與屬性之間的關系,同級的節點或屬性要嚴格保證相同的縮進:
2.3 字面量的表示
字面量包括數字、字符串、布爾值等,YAML中可以直接書寫字面量,而且一般的字符串不需要加任何引號。而引號的使用一般與特殊字符有關:雙引號不會轉義特殊字符;單引號會轉義特殊字符。比如字符串中包含 \n ,雙引號識別為換行,單引號會識別為 \n 。
2.4 對象的表示
YAML為對象的表示提供了兩種表達方式:層級縮進、行內表達。
層級縮進如2.2所示只需要縮進保持對齊,就可以完整的表達一個對象。另一種行內表達的方式如下:
和JSON結構體類似,不過需要注意強制空格,和不加引號。
2.5 數組或List
同樣有兩種寫法:層級縮進和行內表達。
層級縮進的方式,因為屬性的值是多個,所以與一般的屬性定義略有不同,每個元素換行縮進之后需要在前面加一個短橫線 - ,然后強制空格:
行內表達的方式,注意是中括號 [ ] :
2.6 Map
使用@Value可以實現注入:
@Value("#{${cache.studentAge:null}}") private Map<String, Integer> studentAge; cache:studentAge: "{morty : 28}"?注意,map需要用引號將整個結構括起來。我們可以在@Value 中加入默認值 null,這樣可以避免在沒有配置屬性的時候報錯,但是一定要記得在程序中判空。
三、獲取配置文件(不限于YAML)中的值
Spring Boot默認使用SnakeYAML解析YAML文件。
使用配置文件的時候,除了修改Spring Boot提供的默認配置以外(如修改端口),我們還可以在配置文件中定義完全屬于自己的對象,比如一個全局唯一的管理員對象。
Administrator: name: Mortyage: nullgender: MALErole: adminpermission: all定義JavaBean,并使用注解@ConfigurationProperties。
測試:
@RunWith(SpringRunner.class) @SpringBootTest public class AdminTest {@Autowiredprivate Admin admin;@Testpublic void test() {System.out.println("管理員:" + admin);} }執行結果:
另外,除了@ConfigurationProperties注解之外,單獨取得某個值還可以使用@Value,它們之間的區別:
關于@ConfigurationProperties和@Value 兩個注解之間詳細的區別,參考《Spring Boot————@ConfigurationProperties與@Value》。
當然,業務開發中采用在配置文件中定義實體bean的方式是比較愚蠢的。所以,在大多數應用開發場景中,@Value要比@ConfigurationProperties注解用途更廣。然而在Spring Boot的自動配置原理中(參見《Spring Boot面試殺手锏————自動配置原理》),Spring Boot就是使用@ConfigurationProperties完成從配置文件到XxxxProperties對象的映射綁定的,因此,理解這種批量導入屬性的方式是有必要的。
綜上,就是關于YAML配置文件語法的簡單講解和Spring Boot從配置文件中的取值方式,歡迎各位看官文末留言。
總結
以上是生活随笔為你收集整理的Spring Boot —— YAML配置文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux进阶之路————Linux磁盘
- 下一篇: Mybatis从入门到精通下篇