Disconf使用简单Demo

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Disconf使用简单Demo相关的知识,希望对你有一定的参考价值。

创建配置文件

 

  在敲Demo之前,需要在Disconf上创建自己的APP,然后在APP的某个环境下创建配置文件,如下面截图中的流程,这里就简单创建了一个redis.properties,内容是redis的IP和端口号,Key值分别是redis.host和redis.port。

技术分享图片

技术分享图片

 

创建Demo

 

1、使用工具

  Eclipse Kepler Release

  Maven

 

2、创建项目

 

  创建一个Maven Project,修改pom.xml文件,加载所需要的jar包。

 

[html] view plain copy
 
  1. <properties>  
  2.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  3.     <guava.version>16.0.1</guava.version>  
  4.     <java.version>1.7</java.version>  
  5. </properties>  
  6. <parent>  
  7.     <groupId>org.springframework.boot</groupId>  
  8.     <artifactId>spring-boot-starter-parent</artifactId>  
  9.     <version>1.3.2.RELEASE</version>  
  10. </parent>  
  11. <dependencies>  
  12.     <dependency>  
  13.         <groupId>com.baidu.disconf</groupId>  
  14.         <artifactId>disconf-client</artifactId>  
  15.         <version>2.6.31</version>  
  16.     </dependency>  
  17.     <dependency>  
  18.         <groupId>redis.clients</groupId>  
  19.         <artifactId>jedis</artifactId>  
  20.         <version>2.1.0</version>  
  21.     </dependency>  
  22.     <dependency>  
  23.         <groupId>org.springframework.boot</groupId>  
  24.         <artifactId>spring-boot-starter</artifactId>  
  25.         <exclusions>  
  26.             <exclusion>  
  27.                 <groupId>org.springframework.boot</groupId>  
  28.                 <artifactId>spring-boot-starter-logging</artifactId>  
  29.             </exclusion>  
  30.         </exclusions>  
  31.     </dependency>  
  32.     <dependency>  
  33.         <groupId>org.springframework.boot</groupId>  
  34.         <artifactId>spring-boot-starter-log4j</artifactId>  
  35.     </dependency>  
  36. </dependencies>  
  37.   
  38. <build>  
  39.     <plugins>  
  40.         <plugin>  
  41.             <groupId>org.springframework.boot</groupId>  
  42.             <artifactId>spring-boot-maven-plugin</artifactId>  
  43.         </plugin>  
  44.     </plugins>  
  45. </build>  

 

 

2、添加配置文件

 

  在resources包下添加配置文件,分别为applicationContext.xml、disconf.properties,如果需要的话,还要添加log4j的配置文件,以便查看控制台打印的信息。

 

  applicationContext.xml,要注意修改红色加粗部分,修改为自己创建的包路径。

 

[html] view plain copy
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <beans xmlns="http://www.springframework.org/schema/beans"  
  4.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"  
  5.        xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6.         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
  7.         http://www.springframework.org/schema/aop  
  8.         http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">  
  9.   
  10.     <aop:aspectj-autoproxy proxy-target-class="true"/>  
  11.   
  12.     <!-- 使用disconf必须添加以下配置 -->  
  13.     <bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean"  
  14.           destroy-method="destroy">  
  15.         <property name="scanPackage" value="<span style="color:#ff6666;"><strong>com.tgb.service</strong></span>"/>  
  16.     </bean>  
  17.     <bean id="disconfMgrBean2" class="com.baidu.disconf.client.DisconfMgrBeanSecond"  
  18.           init-method="init" destroy-method="destroy">  
  19.     </bean>  
  20.       
  21.     <bean id="configproperties_disconf"  
  22.         class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean">  
  23.         <property name="locations">  
  24.             <list>  
  25.                 <value>classpath:/redis.properties</value>  
  26.             </list>  
  27.         </property>  
  28.     </bean>  
  29.   
  30.     <bean id="propertyConfigurer"  
  31.         class="com.baidu.disconf.client.addons.properties.ReloadingPropertyPlaceholderConfigurer">  
  32.         <property name="ignoreResourceNotFound" value="true" />  
  33.         <property name="ignoreUnresolvablePlaceholders" value="true" />  
  34.         <property name="propertiesArray">  
  35.             <list>  
  36.                 <ref bean="configproperties_disconf" />  
  37.             </list>  
  38.         </property>  
  39.     </bean>  
  40.   
  41. </beans>  

 

 

  disconf.properties,具体的配置项可以参考官网:http://disconf.readthedocs.io/zh_CN/latest/config/src/client-config.html#disconf-client

 

[html] view plain copy
 
  1. # 是否使用远程配置文件,true(默认)会从远程获取配置,false则直接从本地获取配置  
  2. disconf.enable.remote.conf=true  
  3.   
  4. # 配置服务器的HOST,用逗号分隔  
  5. disconf.conf_server_host=192.168.111.130:8080  
  6.   
  7. # 版本号  
  8. disconf.version=1.0.0  
  9.   
  10. # APP的名称  
  11. disconf.app=YZEvaluationSystem  
  12.   
  13. # 添加的配置文件所在的环境  
  14. disconf.env=local  
  15.   
  16. # 忽略分布式配置  
  17. disconf.ignore=  
  18.   
  19. # 获取远程配置重试次数  
  20. disconf.conf_server_url_retry_times=1  
  21. # 获取远程配置重试时休眠时间  
  22. disconf.conf_server_url_retry_sleep_seconds=1  
  23.   
  24. # 用户自定义的下载路径  
  25. disconf.user_define_download_dir=./config  

 

 

log4j.xml

 

[html] view plain copy
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.           
  3. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  
  4. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">  
  5.     <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">  
  6.         <layout class="org.apache.log4j.PatternLayout">  
  7.             <param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %t %5p %c{2}: %m%n" />  
  8.         </layout>  
  9.     </appender>  
  10.     <root>  
  11.         <level value="INFO" />  
  12.         <appender-ref ref="CONSOLE" />  
  13.     </root>  
  14. </log4j:configuration>  

 

 

3、创建相应的类

 

  在创建好的包路径下创建一个JedisConfig类和DisconfRunMain类。

 

JedisConfig类

 

[java] view plain copy
 
  1. package com.tgb.service;  
  2.   
  3. import org.slf4j.Logger;  
  4. import org.slf4j.LoggerFactory;  
  5. import org.springframework.context.annotation.Configuration;  
  6.   
  7. import com.baidu.disconf.client.common.annotations.DisconfFileItem;  
  8. import com.baidu.disconf.client.common.update.IDisconfUpdate;  
  9.   
  10. @Configuration  
  11. public class JedisConfig implements IDisconfUpdate {  
  12.   
  13.     protected static final Logger LOGGER = LoggerFactory  
  14.             .getLogger(JedisConfig.class);  
  15.   
  16.     // 代表连接地址  
  17.     private String host;  
  18.   
  19.     // 代表连接port  
  20.     private int port;  
  21.   
  22.     /** 
  23.      * 地址, 分布式文件配置 
  24.      *  
  25.      * @return 
  26.      */  
  27.     @DisconfFileItem(name = "redis.host", associateField = "host")  
  28.     public String getHost() {  
  29.   
  30.         return host;  
  31.     }  
  32.   
  33.     public void setHost(String host) {  
  34.   
  35.         this.host = host;  
  36.     }  
  37.   
  38.     /** 
  39.      * 端口, 分布式文件配置 
  40.      *  
  41.      * @return 
  42.      */  
  43.     @DisconfFileItem(name = "redis.port", associateField = "port")  
  44.     public int getPort() {  
  45.   
  46.         return port;  
  47.     }  
  48.   
  49.     public void setPort(int port) {  
  50.   
  51.         this.port = port;  
  52.     }  
  53.   
  54.     public void reload() throws Exception {  
  55.   
  56.         LOGGER.info("host: " + host);  
  57.     }  
  58. }  

 

 

DisconfRunMain类

 

[java] view plain copy
 
  1. package com.tgb.service;  
  2.   
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.context.annotation.ImportResource;  
  6.   
  7. @SpringBootApplication  
  8. @ImportResource({ "classpath:applicationContext.xml" })  
  9. // 引入disconf  
  10. public class DisconfRunMain{  
  11.   
  12.     public static void main(String args[]) {  
  13.   
  14.         SpringApplication.run(Application.class, args);  
  15.   
  16.     }  
  17. }  

 

 

4、执行main方法

 

  在main方法上右键run as Java Application即可启动,启动过程会打印Spring Boot启动信息、Disconf的初始化配置信息、连接Zookeeper的信息以及打印出redis.properties文件的内容信息。从文件夹中查看项目,会发现项目路径下多出一个config文件夹,里面是下载到本地的redis.properties文件,是因为在disconf.properties中设置了下载路径为./config。

以上是关于Disconf使用简单Demo的主要内容,如果未能解决你的问题,请参考以下文章

Disconf实践指南:安装篇

docker下使用disconf:细说demo开发

Disconf实践指南:使用篇

Disconf原理及分布式配置中心的一般实现思路

disconf:客户端使用遇到的问题

docker下使用disconf:极速体验