• 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并修改相应的参数。

  • 相关阅读:
    拾遗:『rhel6系列的开、关机脚本』
    拾遗:{rpm、yum及源码方式管理软件包}
    拾遗:sed&vim
    拾遗:Linux 用户及权限管理基础
    『BASH』——Learn BashScript from Daniel Robbins——[003]
    『BASH』——Hadex's brief analysis of "Lookahead and Lookbehind Zero-Length Assertions"
    『BASH』——Learn BashScript from Daniel Robbins——[001-002]
    Modular arithmetic and Montgomery form 实现快速模乘
    __int128使用
    Windows10下安装CentOS7双系统
  • 原文地址:https://www.cnblogs.com/warehouse/p/6885483.html
Copyright © 2020-2023  润新知