disconf基于XML实现

基于XML的实现

虽然注解式编程简单、直观,易维护,但是,它是具有一定的代码侵入性的。disconf考虑到有些用户不想写代码,只想通过XML配置(可能是在旧项目中使用disconf)来实现分布式配置的需求。因此,disconf亦实现了基于XML分布式的实现方式。

ReloadablePropertiesFactoryBean实现了配置文件的disconf托管

ReloadablePropertiesFactoryBean继承了PropertiesFactoryBean类,它主要做到:

  • 托管配置文件至disconf仓库,并下载至本地。
  • 解析配置数据传递到 ReloadingPropertyPlaceholderConfigurer
ReloadingPropertyPlaceholderConfigurer实现了配置数据至Bean的映射

ReloadingPropertyPlaceholderConfigurer继承自Spring的配置类PropertyPlaceholderConfigurer,它会在Spring启动时将配置数据与Bean做映射,以便在检查到配置文件更改时,可以实现Bean相关域值的自动注入。

ReloadConfigurationMonitor 定时校验配置是否更新

它是一个Timer类,定时校验配置是否有更改,进而促发 ReloadingPropertyPlaceholderConfigurer 类来分析要对哪些 Bean实例进行重新注入。

 

Tutorial 7 可自定义的部分托管的分布式配置

在多人开发情况下,可能会有一两个配置文件需要经常改动,且每个人的配置都不大一样,在这种情况下,当然希望此配置文件(或多个配置) 均不要使用Disconf托管。

Disconf考虑到了此种情况。举个实例,数据库配置文件,每个人的数据库可能不大一样,那么,你可以修改 disconf.properties :

# 忽略哪些分布式配置,用逗号分隔
ignore=jdbc-mysql.properties

将此配置文件添加到ignore的列表里。这样,程序运行时,Disconf就会忽略托管此配置文件,而改为读取你本地的配置文件 jdbc-mysql.properties。

 

如果想配置文件,但是不想自动reload,那么该怎么办?

可以使用以下与本方法非常相似的做法:

<!-- 使用托管方式的disconf配置(无代码侵入, 配置更改不会自动reload)-->
<bean id="configproperties_no_reloadable_disconf"
      class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean">
    <property name="locations">
        <list>
            <value>myserver.properties</value>
        </list>
    </property>
</bean>

<bean id="propertyConfigurerForProject1"
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="ignoreResourceNotFound" value="true"/>
    <property name="ignoreUnresolvablePlaceholders" value="true"/>
    <property name="propertiesArray">
        <list>
            <ref bean="configproperties_no_reloadable_disconf"/>
        </list>
    </property>
</bean>

在这里,myserver.properties被disconf托管,当在disconf-web上修改配置文件时,配置文件会被自动下载至本地,但是不会reload到系统里。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值