Spring Cloud配置文件加載優先級簡述


    Spring Cloud中配置文件的加載機制與其它的Spring Boot應用存在不一樣的地方;如它引入了bootstrap.properties的配置文件,同時也支持從配置中心中加載配置文件等;本文主要聚焦在這些配置文件加載的優先級及覆蓋關系的控制上,對於幫助理解Spring Cloud的配置文件加載方式有一定的幫助。
  

1. bootstrap上下文
Spring中加載的配置文件是分層級的;

Spring Cloud啟動的時候會創建一個bootstrap的上下文,它是應用的父級上下文(請注意這里所說的bootstrap指的是是啟動最開始時加載的配置項,與bootstrap.yml或者說bootstrap.properties是兩碼事,這點很容易混淆);它負責從一些外部環境中加載配置項,如配置中心;這部分配置項的優先級是最高的,因此它不會被其它的配置文件中加載的配置項給覆蓋。

bootstrap的上下文使用另外一種機制來加載額外的配置文件,相對於從application.properties(或者yml)中加載配置文件中加載配置項,你也可以選擇從bootstrap.properties(yml)中加載,以區分boostrap上下文中加載的配置項和主上下文加載的配置項。

可以在系統配置項或者啟動命令參數中指定不使用bootstrap機制加載配置項:

spring.cloud.bootstrap.enabled=false

2. 配置項加載位置
Spring Cloud應用加載的配置項可以來自於以下幾個位置:

啟動命令中指定的配置項;
  操作系統配置項;
  環境變量
  配置中心中的配置文件;
  本地的application.properties(yml)
  本地boostrap.properties(yml)
  這幾個位置的配置項從上往下優先級遞減,即從上面位置加載的配置項會覆蓋下面位置加載的配置項。如application.properties中加載的配置項優先級要高於bootstrap.properties中加載的配置項


3.配置項的覆蓋配置

默認情況下,從Spring Cloud Config中加載的配置項,是不能被本地的配置項覆蓋的,如果想要覆蓋這些配置項,需要在配置中心的配置文件中(或者系統配置項、命令行配置項中等)添加以下配置項(注意本地配置文件中增加該配置無任何意義)

spring.cloud.config.allowOverride=true

表示本地的配置文件(如bootstrap.yml或者application.yml)中的配置項可以覆蓋遠程的配置項,默認是false;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM