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

时间: 2024-09-30 12:13:40

disconf实践(四)基于注解的分布式配置文件管理,自动reload的相关文章

disconf实践(三)基于XML的分布式配置文件管理,自动reload

上一篇介绍了基于xml的非自动reload的分布式配置文件管理,这一篇介绍自动reload的方式(基于disconf实践二). 1. 修改RedisConfig.java 1 package org.springinaction.weather.config; 2 3 public class RedisConfig { 4 5 private String host; 6 7 private String port; 8 9 public String getHost() { 10 retur

disconf实践(二)基于XML的分布式配置文件管理,不会自动reload

上一篇博文介绍了disconf web的搭建流程,这一篇就介绍disconf client通过配置xml文件来获取disconf管理端的配置信息. 1. 登录管理端,并新建APP,然后上传配置文件 2. 在工程中新建disconf.properties,根据管理端新建的APP修改相关属性,放在classpath下 1 # 是否使用远程配置文件 2 # true(默认)会从远程获取配置 false则直接获取本地配置 3 enable.remote.conf=true 4 5 # 6 # 配置服务器

缓存初解(三)---Spring3.0基于注解的缓存配置+Ehcache和OScache

本文将构建一个普通工程来说明spring注解缓存的使用方式,关于如何在web应用中使用注解缓存,请参见: Spring基于注解的缓存配置--web应用实例 一.简介 在spring的modules包中提供对许多第三方缓存方案的支持,包括: EHCache OSCache(OpenSymphony) JCS GigaSpaces JBoss Cache 等等. 将这些第三方缓存方案配置在spring中很简单,网上有许多介绍,这里只重点介绍如何配置基于注解的缓存配置. 本文将通过例举EHCache和

基于注解的bean配置

基于注解的bean配置,主要是进行applicationContext.xml配置.DAO层类注解.Service层类注解. 1.在applicationContext.xml文件中配置信息如下 <!--定义服务层代码存放的包扫描路径--> <context:component-scan base-package="org.mainstudio.com.service,org.mainstudio.com.dao" /> 其中base-package包括了要进行

Struts2基于注解的Action配置

使用注解来配置Action的最大优点就是能够实现零配置,可是事务都是有利有弊的.使用方便.维护起来就没那么方便了. 要使用注解方式,我们必须加入一个额外包:struts2-convention-plugin-2.x.x.jar. 虽说是零配置的,但struts.xml还是少不了的,配置例如以下: <? xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apa

Spring AOP基于注解的“零配置”方式

Spring AOP基于注解的“零配置”方式: Spring的beans.xml中 <!-- 指定自动搜索Bean组件.自动搜索切面类 --> <context:component-scan base-package="org.crazyit.app.service,org.crazyit.app.aspect"> <context:include-filter type="annotation" expression="or

缓存初解(五)---SpringMVC基于注解的缓存配置--web应用实例

之前为大家介绍了如何使用spring注解来进行缓存配置 (EHCache 和 OSCache)的简单的例子,详见 Spring基于注解的缓存配置--EHCache AND OSCache 现在介绍一下如何在基于注解springMVC的web应用中使用注解缓存,其实很简单,就是将springMVC配置文件与缓存注解文件一起声明到context中就OK了. 下面我就来构建一个基于spring注解小型的web应用,这里我使用EHCache来作为缓存方案 jar依赖: ehcache-core-1.7.

基于注解的形式配置Bean

基于注解的方式配置Bean:也就说我们在每个Bean的类名前面注解一下,Spring会自动帮我们扫描Bean放进IOC容器中 I基于注解的方式配置Bean(没有依赖关系的Bean)有两个步骤: 1组件扫描(component scanning): Spring 能够从 classpath( 类路径下,也就是Src文件夹下)下自动扫描, 侦测和实例化具有特定注解的组件.  特定组件包括: @Component: 基本注解, 标识了一个受 Spring 管理的组件   @Respository: 建

Mybatis(dao层)基于注解模式的配置方式

1.还是要新建Shop.xml文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dao.Sh