准備工作:
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注解類所在包路徑
注解方式使用:
配置文件注解使用
具體步驟是:
- 為這個類定義 @DisconfFile 注解,指定文件名為 code.properties 。
- 定義域codeError,並使用Eclipse為其自動生成 get&set 方法。
- 為該域的get方法上添加注解 @DisconfFileItem 。添加標記 name, 表示配置文件中的KEY名,這是必填的。標記associateField是可選的,它表示此get方法相關連的域的名字,如果此標記未填,則系統會自動 分析get方法,猜測其相對應於域名。強烈建議添加associateField標記,這樣就可以避免Eclipse生成的Get/Set方法不符合 Java規范的問題。
- 標記它為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