yaml配置簡介

配置文件簡介

   Spring Boot 中的配置文件有兩種格式,properties 或者 yaml,通常狀況下,二者能夠任意使用,可是他們仍是有一些本質上的區別的,本文主要介紹yaml 配置,最後再來看看 yaml 和 properties 配置文件的區別java

文件位置

首先application.yaml 在 Spring Boot 中能夠寫在四個不一樣的位置,分別是以下位置:

1.項目根目錄下的config目錄中redis

2.項目根目錄下spring

3. Classpath中的config數組

4. classpathbash

   四個位置中的 application.yaml 文件的優先級按照上面列出的順序依次下降。即若是有同一個屬性在四個文件中都出現了,優先級高的爲準。同時,開發者能夠本身指定yaml文件的名字,可是若是自定義以後,須要指定配置文件的位置app

如圖:


     這是在idea中配置的,若項目已經打成jar包以後,那麼須要在項目啓動時加入以下參數 java -jar myproject.jar --spring.config.name=app

     這樣配置以後,在項目啓動時,就會按照上面所說的四個位置按順序去查找一個名爲app.yaml 的文件。固然這四個位置也不是一成不變的,也能夠本身定義,有兩種方式,一個是使用spring.config.location 屬性,另外一個則是使用 spring.config.additional-location 這個屬性,在第一個屬性中,表示本身從新定義配置文件的位置,項目啓動時就按照定義的位置去查找配置文件,這種定義方式會覆蓋掉默認的四個位置,也可使用第二種方式,第二種方式則表示在四個位置的基礎上,再添加幾個位置,新添加的位置的優先級大於本來的位置。

配置方式如圖


   此處注意,配置文件位置時,值必定要以/結尾

數組注入

Yaml也支持數組注入,例如ide

my:  
  servers:
  - my1.example.com	
  - my2.example.com複製代碼

這段數據能夠綁定到一個帶Bean的數組當中

@ConfigurationProperties(prefix="my")
@Component
public class Config { 	
  private List<String> servers = new ArrayList<String>(); 	
  public List<String> getServers() {		
    return this.servers;	
  }
}複製代碼

    項目啓動後,配置中的數組會自動存儲到server集合中,固然,yaml中不止能夠存儲數組,也能夠在存儲對象,

redis:  
  redisConfigs:    
  - host: 192.168.66.1      
    port: 1111
  - host: 192.168.0.10
    port: 1111

複製代碼

這個就能夠被注入以下類中

@Component
@ConfigurationProperties(prefix = "redis")
public class MyRedis {    
   private List<SingleRedisConfig> redisConfigs;
}複製代碼

優缺點

不一樣於properties 文件的無序, yaml 配置是有序的,這一點在有些配置中是很是有用的,例如在 Spring Cloud Zuul 的配置中,當咱們配置代理規則是,順序就顯得尤其重要了。固然 yaml 配置也不是萬能的,例如 yaml 配置目前不支持 @PropertySource 註解


本人創業團隊產品MadPecker,主要作BUG管理、測試管理、應用分發測試

網址:www.madpecker.com,有須要的朋友歡迎試用、體驗! ui

本文爲MadPecker技術人員編寫,轉載請標明出處this

相關文章
相關標籤/搜索