zoukankan      html  css  js  c++  java
  • disconf实践(四)基于注解的分布式配置文件管理,自动reload

    上一篇讲解了基于xml的自动reload的分布式配置文件管理,这一篇讲解基于注解的自动reload的方式(基于disconf实践二)。

    1. 修改spring配置文件

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
     4     xsi:schemaLocation="http://www.springframework.org/schema/beans
     5         http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
     6         http://www.springframework.org/schema/context
     7         http://www.springframework.org/schema/context/spring-context-4.3.xsd">
     8 
     9     <context:component-scan base-package="org.springinaction.weather.config" />
    10 
    11     <!-- 使用disconf必须添加以下配置 -->
    12     <bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean"
    13         destroy-method="destroy">
    14         <property name="scanPackage" value="org.springinaction.weather.config" />
    15     </bean>
    16     <bean id="disconfMgrBean2" class="com.baidu.disconf.client.DisconfMgrBeanSecond"
    17         init-method="init" destroy-method="destroy">
    18     </bean>
    19 </beans>

    2. 修改RedisConfig.java

    实现 IDisconfUpdate 接口。此类必须是JavaBean,Spring托管的,且 “scope” 都必须是singleton的。

    添加 @DisconfUpdateService 注解,classes 值加上 RedisConfig.class ,表示当 RedisConfig.class 这个配置文件更新时,此回调类将会被调用。或者,使用 confFileKeys 也可以。

     1 package org.springinaction.weather.config;
     2 
     3 import org.springframework.context.annotation.Scope;
     4 import org.springframework.stereotype.Component;
     5 
     6 import com.baidu.disconf.client.common.annotations.DisconfFile;
     7 import com.baidu.disconf.client.common.annotations.DisconfFileItem;
     8 import com.baidu.disconf.client.common.annotations.DisconfUpdateService;
     9 import com.baidu.disconf.client.common.update.IDisconfUpdate;
    10 
    11 @Component("redisConfig")
    12 @Scope("singleton")
    13 @DisconfFile(filename = "redis.properties")
    14 @DisconfUpdateService(classes = { RedisConfig.class })
    15 public class RedisConfig implements IDisconfUpdate {
    16 
    17     private String host;
    18 
    19     private String port;
    20 
    21     @DisconfFileItem(name = "redis.host", associateField = "host")
    22     public String getHost() {
    23         return host;
    24     }
    25 
    26     @DisconfFileItem(name = "redis.port", associateField = "port")
    27     public String getPort() {
    28         return port;
    29     }
    30 
    31     @Override
    32     public void reload() throws Exception {
    33 
    34     }
    35 }

    修改之后,在管理端修改redis.properties的配置信息时,应用会自动reload并修改相应的参数。

  • 相关阅读:
    表连接问题
    public interface Serializable?标记/标签接口
    4.21
    第十周周记
    测试
    第九周周记
    第七周周记
    fighting.
    fighting
    作业一
  • 原文地址:https://www.cnblogs.com/warehouse/p/6885483.html
Copyright © 2011-2022 走看看