統一配置管理-百度disconf


准備工作:

1.在客戶端應用的pom文件中新增disconf依賴

         <dependency>

            <groupId>com.baidu.disconf</groupId>

            <artifactId>disconf-client</artifactId>

            <version>2.6.36</version>

        </dependency>

2. 在客戶端應用的classpath下新增disconf.properties文件

注:所有disconf.properties配置文件中的參數,都可以通過-Dxxx=xxx的啟動參數方式進行覆蓋

Disconf啟動需要此文件,文件示例是:

# 是否使用遠程配置文件
# true(默認)會從遠程獲取配置 false則直接獲取本地配置
enable.remote.conf=true

#
# 配置服務器的 HOST,用逗號分隔  127.0.0.1:8000,127.0.0.1:8000
#
conf_server_host=127.0.0.1:8080

# 版本, 請采用 X_X_X_X 格式 
version=1_0_0_0

# APP 請采用 產品線_服務名 格式 
app=disconf_demo

# 環境
env=rd

# debug
debug=true

# 忽略哪些分布式配置,用逗號分隔
ignore=

# 獲取遠程配置 重試次數,默認是3次
conf_server_url_retry_times=1
# 獲取遠程配置 重試時休眠時間,默認是5秒
conf_server_url_retry_sleep_seconds=1

配置相關說明可參考:https://github.com/knightliao/disconf/wiki/%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E

3. 在applicationContext.xml添加Disconf啟動支持

scanPackage是掃描標注了disconf注解類所在包路徑

注解方式使用:

配置文件注解使用

具體步驟是:

  1. 為這個類定義 @DisconfFile 注解,指定文件名為 code.properties 。
  2. 定義域codeError,並使用Eclipse為其自動生成 get&set 方法。
  3. 為該域的get方法上添加注解 @DisconfFileItem 。添加標記 name, 表示配置文件中的KEY名,這是必填的。標記associateField是可選的,它表示此get方法相關連的域的名字,如果此標記未填,則系統會自動 分析get方法,猜測其相對應於域名。強烈建議添加associateField標記,這樣就可以避免Eclipse生成的Get/Set方法不符合 Java規范的問題。
  4. 標記它為Spring托管的類 (使用@Service),且 "scope" 都必須是singleton的。

注意:

Eclipse自動生成的get方法,可能與Java的規范不同。這會導致很多問題。因此,建議加上 associateField 標記。

在disconf-web上code.properties新增該配置文件(版本,環境,app與disconf.properties配置文件中相同)

配置項注解使用:

配置更新回調:

實現IDisconfUpdate接口,並且該類是由spring管理

注解@DisconfUpdateService, confFileKeys為監控配置文件更新,itemKeys為監控配置項更新

基於XML的配置使用

配置變更自動注入配置項到bean實例中(存在讀一致性問題,建議用DisconfiFile注解方式使用):

 

配置文件會被自動下載至本地,但是不會reload到系統里(使用靜態配置如數據庫鏈接配置等,重啟后方可生效)

更多使用見disconf的相關wiki

https://github.com/knightliao/disconf/wiki


免責聲明!

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



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