Spring-Boot的應用環(huán)境感知自識別配置

Spring Boot的應用環(huán)境感知自識別配置解決方案

1. Spring Boot應用集成etcd配置源

起衣,2018.1.2

在分布式、云化的系統(tǒng)里,應用的配置(尤其是依賴服務的配置、環(huán)境相關的配置)都存儲到應用的本地配置文件里會給維護帶來很大的麻煩,而且 docker 更是將應用本身做成了鏡像,更難以在本地的配置文件里去存儲一些部署環(huán)境相關的信息。所以通常在整個系統(tǒng)里會有一個公共的配置服務,配置服務統(tǒng)一集中地維護其他系統(tǒng)的配置信息,再通過網(wǎng)絡分發(fā)。Spring Cloud Config 就是 Spring 推出的解決方案,不過在自己的應用里還不想為此再起 Java 進程,就選擇了較為輕量級的 etcd 來作為配置服務。

2. Apollo - 攜程

Apollo(阿波羅)是攜程框架部門研發(fā)的分布式配置中心,能夠集中化管理應用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r推送到應用端,并且具備規(guī)范的權限、流程治理等特性,適用于微服務配置管理場景。

3. Spring Boot自定義配置屬性源(PropertySource)

caosh,2017.12.5

配置覆蓋優(yōu)于profile

在生產(chǎn)實踐中,配置覆蓋是解決不同環(huán)境不同配置的常用方法。比如用生產(chǎn)服務器上的配置文件覆蓋包內(nèi)的文件,或者使用中心化的配置服務來覆蓋默認的業(yè)務配置。

相比于profile機制,即不同環(huán)境使用不同的配置文件,覆蓋的方式更有優(yōu)勢。程序員在開發(fā)時不需要關心生產(chǎn)環(huán)境數(shù)據(jù)庫的地址、賬號等信息,一次構建即可在不同環(huán)境中運行,而profile機制需要將生產(chǎn)環(huán)境的配置寫到項目資源文件中,而且要為不同環(huán)境使用不同的構建參數(shù)或者運行參數(shù)。

Spring提供了靈活的配置擴展能力,有多種方式將自定義的屬性源集成進來,可以輕松地實現(xiàn)配置覆蓋。

自定義屬性源工廠

如果想要更加靈活的自定義屬性源,比如實現(xiàn)從中心化的配置服務加載配置,可以通過實現(xiàn) PropertySourceFactory 接口,并通過配置 @PropertySource 注解的 factory 參數(shù)來實現(xiàn)。

4. Spring Boot自定義配置源

atheva,2017.10.17

概述

如果我們有遠程配置,如何把她引入進來呢。

實現(xiàn)方式

  1. 通過 EnvironmentPostProcessor 接口把我們自定義的 PropertySource 加入 Environment 中(相對簡單但沒那么“優(yōu)雅”)
  2. 參考 Spring Cloud 中的做法,也只需要 3 步(相對比較復雜一點)

小結

上面只是拋磚引玉,這樣無論是哪里的數(shù)據(jù)源,都可以通過這種方式編寫,把配置交給 Spring 管理。這樣再也不怕在本地配置文件中出現(xiàn)敏感信息啦,再也不怕修改配置文件需要登錄每一臺機器修改啦。


祝玩得開心!ˇ?ˇ
云舒,2017.10.4,杭州

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容