apollo 配置提前加載

碰到的問題

項目基于SpringCloud+Apollo配置中心今布,在開發(fā)階段硫嘶,F(xiàn)eign遠程調(diào)用的時候url是寫死的阻问,但是提測后,需要進行靈活配置沦疾,所以使用了占位符称近,發(fā)現(xiàn)${}沒有生效。
導致請求調(diào)用的時候出錯哮塞。

解決過程

首先是檢查配置是否正確刨秆,請求的代碼示例如下:

@FeignClient(name = "xxx", url = "${xxx}")
public interface FeignClientService {
    /**
     * 獲取實體列表
     *
     * @param xxx xxx
     * @return
     * @throws Exception
     */
    @GetMapping("/xxx/xxx/xxx")
    FeignResp<EntityListVO> getEntityList(@RequestParam(value = "xxx") String xxx) throws Exception;

當url使用固定時,可以正常的解析出請求的url忆畅,使用${}沒有生效衡未。
這個時候查詢了Apollo的文檔Java客戶端使用指南3.2.1.3SpringBoot集成方式

Spring Boot除了支持上述兩種集成方式以外,還支持通過application.properties/bootstrap.properties來配置家凯,該方式能使配置在更早的階段注入缓醋,比如使用@ConditionalOnProperty的場景或者是有一些spring-boot-starter在啟動階段就需要讀取配置做一些事情(如dubbo-spring-boot-project),所以對于Spring Boot環(huán)境建議通過以下方式來接入Apollo(需要0.10.0及以上版本)绊诲。
從1.2.0版本開始送粱,如果希望把日志相關(guān)的配置(如logging.level.root=info或logback-spring.xml中的參數(shù))也放在Apollo管理,那么可以額外配置apollo.bootstrap.eagerLoad.enabled=true來使Apollo的加載順序放到日志系統(tǒng)加載之前驯镊,不過這會導致Apollo的啟動過程無法通過日志的方式輸出(因為執(zhí)行Apollo加載的時候葫督,日志系統(tǒng)壓根沒有準備好呢!所以在Apollo代碼中使用Slf4j的日志輸出便沒有任何內(nèi)容)板惑,更多信息可以參考PR 1614橄镜。參考配置示例如下:
# will inject 'application' namespace in bootstrap phase
apollo.bootstrap.enabled = true
# put apollo initialization before logging system initialization
apollo.bootstrap.eagerLoad.enabled=true

增加了如上的配置后,發(fā)現(xiàn)仍然沒有作用冯乘,然后檢查了Apollo的版本洽胶,發(fā)現(xiàn)版本的1.1.0,這個時候內(nèi)心是崩潰的裆馒,因為配置中心是公司統(tǒng)一使用的姊氓,所以沒有辦法隨便升級,只能自己想辦法了喷好。

解決方式

沒辦法在Springboot啟動前加載翔横,可以嘗試手動加載。

import com.ctrip.framework.apollo.ConfigService;

public class ClientUrlConfig {
    public void init() {
        this.initSet("此處寫你需要提前初始化的key");
    }
    private void initSet(String... keys) {
        for (String key : keys) {
            String val = ConfigService.getAppConfig().getProperty(key, null);
            System.setProperty(key, val);
        }
    }
}

然后在SpringApplication.run() 之前加載

public static void main(String[] args) {
       new ClientUrlConfig().init();
       SpringApplication.run(Application.class, args);
   }

通過在啟動前將配置注入梗搅,${} 就可以獲取到正確的鏈接了禾唁。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市无切,隨后出現(xiàn)的幾起案子荡短,更是在濱河造成了極大的恐慌,老刑警劉巖哆键,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掘托,死亡現(xiàn)場離奇詭異,居然都是意外死亡籍嘹,警方通過查閱死者的電腦和手機闪盔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辱士,“玉大人锭沟,你說我怎么就攤上這事∈恫梗” “怎么了族淮?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長凭涂。 經(jīng)常有香客問我祝辣,道長,這世上最難降的妖魔是什么切油? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任蝙斜,我火速辦了婚禮,結(jié)果婚禮上澎胡,老公的妹妹穿的比我還像新娘孕荠。我一直安慰自己娩鹉,他們只是感情好,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布稚伍。 她就那樣靜靜地躺著弯予,像睡著了一般。 火紅的嫁衣襯著肌膚如雪个曙。 梳的紋絲不亂的頭發(fā)上锈嫩,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天,我揣著相機與錄音垦搬,去河邊找鬼呼寸。 笑死,一個胖子當著我的面吹牛猴贰,可吹牛的內(nèi)容都是我干的对雪。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼米绕,長吁一口氣:“原來是場噩夢啊……” “哼慌植!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起义郑,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤蝶柿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后非驮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體交汤,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年劫笙,在試婚紗的時候發(fā)現(xiàn)自己被綠了芙扎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡填大,死狀恐怖戒洼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情允华,我是刑警寧澤圈浇,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站靴寂,受9級特大地震影響磷蜀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜百炬,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一褐隆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧剖踊,春花似錦庶弃、人聲如沸衫贬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽固惯。三九已至,卻和暖如春掉伏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背澳窑。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工斧散, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人摊聋。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓鸡捐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親麻裁。 傳聞我的和親對象是個殘疾皇子箍镜,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 原文鏈接:https://docs.spring.io/spring-boot/docs/1.4.x/refere...
    pseudo_niaonao閱讀 4,711評論 0 9
  • 要加“m”說明是MB,否則就是KB了. -Xms:初始值 -Xmx:最大值 -Xmn:最小值 java -Xms8...
    dadong0505閱讀 4,849評論 0 53
  • 在我搭建基于Spring Cloud的微服務體系應用的時候所需要或者是常用的屬性配置文件煎源,還有這些屬性的用途色迂,此配...
    StrongManAlone閱讀 4,032評論 0 18
  • 今天晚上,我們有一個發(fā)現(xiàn)手销,就是在操作的時候歇僧,一定要按關(guān)鍵點的步法來進行操作。如一加一等于二锋拖,只有這樣才能得到正...
    宏遠_3d6b閱讀 148評論 0 0
  • ?今天早晨在微信群里看到萍姐給老公發(fā)的生日祝福诈悍,才想起今天是老公的生日,喊在廚房的老公:今天是你生日啊兽埃。老公說是呀...
    閆麗麗閱讀 260評論 0 2