配置分離的好處在此不多說,具體說下如何使用disconf
1.加入依賴
<dependency> <groupId>com.baidu.disconf</groupId> <artifactId>disconf-client</artifactId> <version>2.6.36</version> </dependency>
2.添加配置文件spring-disconf.xml
這里將application.properties交給disconf管理
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <aop:aspectj-autoproxy proxy-target-class="true"/> <!-- 使用disconf必須添加以下配置 --> <bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean" destroy-method="destroy"> <property name="scanPackage" value="com.sijibao.scfs"/> </bean> <bean id="disconfMgrBean2" class="com.baidu.disconf.client.DisconfMgrBeanSecond" init-method="init" destroy-method="destroy"> </bean> <!-- 需要托管的配置文件 --> <bean id="configproperties_disconf" class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean"> <property name="locations"> <list> <value>application.properties</value> </list> </property> </bean> <bean id="propertyConfigurer" class="com.baidu.disconf.client.addons.properties.ReloadingPropertyPlaceholderConfigurer"> <property name="ignoreResourceNotFound" value="true"/> <property name="ignoreUnresolvablePlaceholders" value="true"/> <property name="propertiesArray"> <list> <ref bean="configproperties_disconf"/> </list> </property> </bean> </beans>
3.添加disconf.properties
這里需要填服務端地址,應用名,配置環境等
enable.remote.conf=true
conf_server_host=xxx
env=dev
version=1.0
app=xxx
debug=true
ignore=
conf_server_url_retry_times=10
conf_server_url_retry_sleep_seconds=3
4.在啟動類加注解
@ImportResource({"classpath:spring-disconf.xml"})
5.登錄discnof服務器建立托管的配置文件
需要注意的是springboot或者spring5集成disconf啟動時會報錯,需要改動源碼
改動點:
com.baidu.disconf.client.addons.properties.ReloadingPropertyPlaceholderConfigurer第97行:
return super.parseStringValue(buf.toString(), props, visitedPlaceholders);
改為:
return helper.replacePlaceholders(strVal, props);
6.需要注意的是,雖然配置交給disconf托管了。但disconf.properties在開發環境和測試環境,生產環境的配置都不一樣,這樣每次打包的時候還需要修改disconf.properties。為了打包時不需要修改文件,可以將disconf.properties文件外置
在啟動時輸入:
java -Ddisconf.conf=/hao24/config/disconf_open/disconf.properties
如果是tomcat啟動:
tomcat 啟動示例
linux環境在catalina.sh
在
“if [ $have_tty -eq 1 ]; then"之后增加
JAVA_OPTS=”-Ddisconf.conf=/hao24/config/disconf_open/disconf.properties"
window環境 startup.bat第一行
SET CATALINA_OPTS= “-Ddisconf.conf=/hao24/config/disconf_open/disconf.properties”