5. Tutorial 5 基于XML的分布式配置文件管理,不会自动reload

Tutorial 1 里,
我们实现了一个简单的Redis服务程序,它使用分布式配置进行管理,此Redis的配置文件存储在分布式服务器 disconf-web 上。它使用的是注解式的配置管理。

Disconf亦支持非注解式的分布式配置管理,下面定义一下概念:

  • 非注解式(托管式):配置文件没有相应的配置注解类,此配置文件不会被注入到配置类中。disconf只是简单的对其进行“托管”。 启动时下载配置文件;配置文件变化时,负责动态推送。注意,此种方式,程序不会自动reload配置,需要自己写回调函数。

由于此方法不会自动reload,因此,对于那些比较重的资源,比如jdbc等,是比较好的托管方式。

使用方法就是在你的applicationContext.xml里添加以下一段代码:

<!-- 使用托管方式的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>

该配置文件列表将被Disconf全部托管。实例启动时,这些配置文件将被下载,当配置更改时,实例亦能感知到,并重新下载这些配置,并且自动调用回调函数。

目前支持 任意类型的 配置文件的托管。

注意:这些配置文件没有相应的配置文件类。