国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 建站經(jīng)驗 > 正文

springcloud config配置讀取優(yōu)先級過程詳解

2019-11-02 14:10:20
字體:
供稿:網(wǎng)友

情景描述

最近在修復(fù)Eureka的靜態(tài)頁面加載不出的缺陷時,最終發(fā)現(xiàn)是遠(yuǎn)程GIT倉庫將靜態(tài)資源訪問方式配置給禁用了(spring.resources.add-mappings=false)。雖然最后直接修改遠(yuǎn)程GIT倉庫的此配置項給解決了(spring.resources.add-mappings=true),但是從中牽涉出的配置讀取優(yōu)先級我們必須好好的再回顧下

springcloud config讀取倉庫配置

通過config client模塊來讀取遠(yuǎn)程的倉庫配置,只需要在boostrap.properties文件中配置如下屬性即可

spring.application.name=eurekaspring.cloud.config.uri=http://localhost:8888spring.cloud.config.name=devspring.cloud.config.username=devspring.cloud.config.password=dev

其就會以GET方式去請求http://localhost:8888/eureka/dev地址從而將配置拉取下來。
當(dāng)然上述的API地址也是需要被訪問服務(wù)器部署了config server服務(wù)方可調(diào)用,具體的細(xì)節(jié)就不展開了

外部源讀取優(yōu)先級

我們都知道spring的配置屬性管理均是存放在Enviroment對象中,就以普通項目StandardEnvironment為例,其配置的存放順序可羅列如下

順位 key 來源 說明
1 commandLineArgs 傳入main函數(shù)的參數(shù)列表 Program arguments
2 systemProperties System.getProperties() JDK屬性列表、操作系統(tǒng)屬性、-D開頭的VM屬性等
3 systemEnvironment System.getEnv() 環(huán)境屬性,例如JAVA_HOME/M2_HOME
4 ${file_name} 配置文件 例如application.yml
5 defaultProperties SpringApplicationBuilder#properties()

那么遠(yuǎn)程讀取的配置的存放應(yīng)該放在上述的哪個位置呢?

我們都知道boostrap上下文通過暴露org.springframework.cloud.bootstrap.config.PropertySourceLocator接口來方便集成第三方的外部源配置讀取,比如本文提及的config client模塊中的org.springframework.cloud.config.client.ConfigServicePropertySourceLocator實現(xiàn)類。

但最終將外部源配置讀取以及插入至Environment對象中則是通過org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration類來完成的。

PropertySourceBootstrapConfiguration

此類也是ApplicationContextInitializer接口的實現(xiàn)類,閱讀過cloud源碼的都知道,此類被調(diào)用是在子類上下文初始化的時候,我們主要看下其復(fù)寫的initialize()方法

 @Override public void initialize(ConfigurableApplicationContext applicationContext) {  CompositePropertySource composite = new CompositePropertySource(    BOOTSTRAP_PROPERTY_SOURCE_NAME);  // 對在boostrap上下文類型為PropertySourceLocator的bean集合進行排序  AnnotationAwareOrderComparator.sort(this.propertySourceLocators);  boolean empty = true;  ConfigurableEnvironment environment = applicationContext.getEnvironment();  for (PropertySourceLocator locator : this.propertySourceLocators) {   PropertySource<?> source = null;   // 讀取外部配置源   source = locator.locate(environment);   if (source == null) {    continue;   }   logger.info("Located property source: " + source);   composite.addPropertySource(source);   empty = false;  }  if (!empty) {   MutablePropertySources propertySources = environment.getPropertySources();   String logConfig = environment.resolvePlaceholders("${logging.config:}");   LogFile logFile = LogFile.get(environment);   if (propertySources.contains(BOOTSTRAP_PROPERTY_SOURCE_NAME)) {    propertySources.remove(BOOTSTRAP_PROPERTY_SOURCE_NAME);   }   // 插入至Environment環(huán)境對象中   insertPropertySources(propertySources, composite);   reinitializeLoggingSystem(environment, logConfig, logFile);   setLogLevels(applicationContext, environment);   handleIncludedProfiles(environment);  } }
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 阳东县| 吉安市| 资源县| 曲松县| 西和县| 九龙城区| 塔城市| 丘北县| 甘孜| 玉树县| 平武县| 瓦房店市| 温泉县| 麻江县| 新源县| 丰台区| 东丽区| 鸡泽县| 瑞金市| 天水市| 洞口县| 乌恰县| 江华| 上蔡县| 屏南县| 香河县| 米易县| 清苑县| 永仁县| 察哈| 寿阳县| 邵阳县| 彭州市| 永胜县| 清镇市| 深圳市| 乌拉特中旗| 大冶市| 清水河县| 日土县| 吉林市|