1. Jar包導入
使用mave添加jar依賴
<dependency>
<groupId>com.baidu.disconf</groupId>
<artifactId>disconf-client</artifactId>
</dependency>
2.Spring 配置文件
<!-- 使用disconf必須添加以下配置 -->
<bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean" destroy-method="destroy">
<property name="scanPackage" value="com.sf" />
</bean>
<bean id="disconfMgrBean2" class="com.baidu.disconf.client.DisconfMgrBeanSecond" init-method="init" destroy-method="destroy">
</bean>
<!-- 使用托管方式的disconf配置(無代碼侵入, 配置更改會自動reload) -->
<bean id="configproperties_disconf"
class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean">
<property name="locations">
<list>
<!--多個動態(tài)配置配置在這里-->
<value>classpath:login-conf.properties</value>
<value>classpath:page.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>
3.編輯properties文件
properties正常些就好了,這里以login-conf.properties為例。
# 登錄超時時間
loginConfMsg.login.timeout=60
loginConfMsg.login.tokenTimeout=84600
#登錄錯誤次數及對應的鎖定時間,單位s
loginConfMsg.login.firstErrorCount=5
loginConfMsg.login.firstLockTime=600
loginConfMsg.login.secondErrorCount=10
loginConfMsg.login.secondLockTime=3600
loginConfMsg.login.thirdErrorCount=15
loginConfMsg.login.thirdLockTime=7200
loginConfMsg.login.lastErrorCount=16
4.使用Spring注解@Value
Spring提供@Value注解來讀取properties文件,并將值注入到對象屬性中。
方式為@Value("#{configproperties_disconf[key]}"),其中configproperties_disconf為Spring 配置文件中的用于裝在properties文件的beanId

image.png
將login-conf.properties文件所需屬性注入到LoginConfMsg 中:
@Repository
public class LoginConfMsg {
@Value("#{configproperties_disconf['loginConfMsg.login.timeout']}")
public String loginTimeout;
@Value("#{configproperties_disconf['loginConfMsg.login.tokenTimeout']}")
public String loginTokenTimeout;
public String getLoginTimeout() {
return loginTimeout;
}
public void setLoginTimeout(String loginTimeout) {
this.loginTimeout = loginTimeout;
}
public String getLoginTokenTimeout() {
return loginTokenTimeout;
}
public void setLoginTokenTimeout(String loginTokenTimeout) {
this.loginTokenTimeout = loginTokenTimeout;
}
}
此處是做簡單舉例,不貼出LoginConfMsg 全部代碼。
5.通過注入類的屬性使用proerties配置
通過上面配置已經將login-conf.properties的讀取工作配置完成,在需要讀取login-conf.properties的類中注入LoginConfMsg
@Autowired
LoginConfMsg loginConfMsg;
讀取形式為直接調用類的get屬性方法即可
int lockTime = Integer.valueOf(loginConfMsg.getLoginFirstLockTime()) - seconds;
以上是使用spring集成disconf讀取properties文件的配置只用過程