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>
<!--多个动态配置配置在这里-->
<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文件的配置只用过程
网友评论