搞Spring Boot的小夥伴都知道,Spring Boot中的配置文件有兩種格式,properties或者yaml,通常狀況下,二者能夠隨意使用,選擇本身順手的就好了,那麼這二者徹底同樣嗎?確定不是啦!本文就來和大夥重點介紹下yaml配置,最後再來看看yaml和properties配置有何區別。java
首先application.yaml在Spring Boot中能夠寫在四個不一樣的位置,分別是以下位置:spring
項目根目錄下的config目錄中後端
項目根目錄下數組
classpath下的config目錄中app
classpath目錄下前後端分離
四個位置中的application.yaml文件的優先級按照上面列出的順序依次下降。即若是有同一個屬性在四個文件中都出現了,以優先級高的爲準。spa
那麼application.yaml是否是必須叫application.yaml這個名字呢?固然不是必須的。開發者能夠本身定義yaml名字,本身定義的話,須要在項目啓動時指定配置文件的名字,像下面這樣:代理
固然這是在IntelliJ IDEA中直接配置的,若是項目已經打成jar包了,則在項目啓動時加入以下參數:code
java -jar myproject.jar --spring.config.name=app
server
這樣配置以後,在項目啓動時,就會按照上面所說的四個位置按順序去查找一個名爲app.yaml的文件。固然這四個位置也不是一成不變的,也能夠本身定義,有兩種方式,一個是使用 spring.config.location
屬性,另外一個則是使用 spring.config.additional-location
這個屬性,在第一個屬性中,表示本身從新定義配置文件的位置,項目啓動時就按照定義的位置去查找配置文件,這種定義方式會覆蓋掉默認的四個位置,也可使用第二種方式,第二種方式則表示在四個位置的基礎上,再添加幾個位置,新添加的位置的優先級大於本來的位置。
配置方式以下:
這裏要注意,配置文件位置時,值必定要以/結尾。
yaml也支持數組注入,例如
這段數據能夠綁定到一個帶Bean的數組中
項目啓動後,配置中的數組會自動存儲到servers集合中。固然,yaml不只能夠存儲這種簡單數據,也能夠在集合中存儲對象。例以下面這種:
這個能夠被注入到以下類中:
不一樣於properties文件的無序,yaml配置是有序的,這一點在有些配置中是很是有用的,例如在Spring Cloud Zuul的配置中,當咱們配置代理規則時,順序就顯得尤其重要了。固然yaml配置也不是萬能的,例如,yaml配置目前不支持@PropertySource註解。
好了,關於YAML的配置就先說這麼多,有問題歡迎留言討論。
▼往期精彩回顧▼2019新年福利,新書免費送!