1. Disconf 的安装

参考文档:

https://blog.csdn.net/u014687848/article/details/80876510

2.Disconf的使用

官方文档:

https://disconf.readthedocs.io/zh_CN/latest/index.html

博客参考文档:

https://blog.csdn.net/lby0307/article/details/80100319

第一步:添加disconf的maven支持

        <dependency><groupId>com.baidu.disconf</groupId><artifactId>disconf-client</artifactId><version>2.6.36</version></dependency>

第二步:创建disconf.properties

# 是否使用远程配置文件
# true(默认)会从远程获取配置 false则直接获取本地配置
disconf.enable.remote.conf=true
#
# 配置服务器的 HOST,用逗号分隔 127.0.0.1:8000,127.0.0.1:8000
#搭建的服务器的路径
disconf.conf_server_host=127.0.0.1:8083
# 版本, 请采用 X_X_X_X 格式
disconf.version=1.0.0
# APP 请采用 产品线_服务名 格式
disconf.app=testBook
# 环境
disconf.env=qa
# 忽略哪些分布式配置,用逗号分隔
disconf.ignore=
# 获取远程配置 重试次数,默认是3次
disconf.conf_server_url_retry_times=1
# 获取远程配置 重试时休眠时间,默认是5秒
disconf.conf_server_url_retry_sleep_seconds=1
# 自定义的下载路径
disconf.user_define_download_dir=./archetype205-service/src/main/resources/config/#disconf.enable_local_download_dir_in_class_path=truea

第三步:创建disconf的java配置类 或xml

(二选一)xml形式:

disconf.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd"><aop:aspectj-autoproxy proxy-target-class="true"/><!-- 使用disconf必须添加以下配置 --><bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean"destroy-method="destroy"><property name="scanPackage" value="com.ohaotian.archetype205"/></bean><bean id="disconfMgrBean2" class="com.baidu.disconf.client.DisconfMgrBeanSecond"init-method="init" destroy-method="destroy"></bean><!-- 需要托管的配置文件 --><bean id="configproperties_disconf"class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean"><property name="locations"><list><!-- <value>classpath:dev.properties</value>--><value>classpath:application.properties</value></list></property></bean><!--  <bean id="propertyConfigurer"class="com.baidu.disconf.client.addons.properties.ReloadingPropertyPlaceholderConfigurer"><property name="ignoreResourceNotFound" value="true"/><property name="ignoreUnresolvablePlaceholders" value="true"/><property name="propertiesArray"><list><ref bean="configproperties_disconf"/></list></property></bean>-->
</beans>

这个位置可以写多个,需要管理的配置文件

(二选一)java配置类 形式:

DisconfConfig.java

@Configuration
public class DisconfConfig implements BeanPostProcessor {//使用disconf必须添加以下配置@Bean(destroyMethod = "destroy")public DisconfMgrBean disconfMgrBean() {DisconfMgrBean disconfMgrBean = new DisconfMgrBean();disconfMgrBean.setScanPackage("com.ohaotian.archetype205");return disconfMgrBean;}@Bean(destroyMethod = "destroy", initMethod = "init")public DisconfMgrBeanSecond disconfMgrBean2() {return new DisconfMgrBeanSecond();}//需要托管的配置文件@Bean(name = "reloadablePropertiesFactoryBean")@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)public ReloadablePropertiesFactoryBean reloadablePropertiesFactoryBean() {ReloadablePropertiesFactoryBean propertiesFactoryBean = new ReloadablePropertiesFactoryBean();propertiesFactoryBean.setSingleton(true);//  配置文件 (这里只有application.properties)List<String> fileNames = new ArrayList<>();fileNames.add("classpath:application.properties");propertiesFactoryBean.setLocations(fileNames);return propertiesFactoryBean;}}

第三步:启动类加载

在 SpringbootApplication 中添加

@ImportResource({"classpath:disconf.xml"})

后,启动项目即可

可以看到,网页上写的配置文件都下载到了指定的目录下

disconf.user_define_download_dir=./archetype205-service/src/main/resources/config/

关于下载到本地的配置文件未立即生效,需要重启项目的问题

例如:

未启动项目之前,原项目里有一个原始默认的application.properties

启动项目成功后,disconf下载了最新的application.properties到 /config 目录下,但最新的application.properties未生效,项目还是以最原始的application.properties运行。

猜测可能原因 是  disconf在项目启动后进行第一次扫描,只读取了disconf.properties 的配置文件信息,application.properties未下载

启动日志关键字段------ LOAD CONFIG START -----********* DISCONF START FIRST SCAN ***********

之后,tomcat 启动,使用的是原始默认的application.properties

tomcat 字段信息加载Service的beanTomcatWebServer:90 -Tomcat initialized with port(s): 8070 (http)

再然后disconf二次扫描,项目开始读取disconf.xml文件或java配置类

启动日志 关键字段DisconfMgr:128 -************************** DISCONF START SECOND SCAN *************************

最终,项目启动成功,配置为原始的application.properties。此时若要下载的配置文件生效,需重启项目

不用重启的解决方案

在启动类的main方法中,添加

 ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("disconf.xml");或
AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(DisconfConfig.class);

例如:注意是写在run()之前

启动后查查看控制台,可发现项目启动后,优先下载配置文件,然后再以最新下载的配置文件初始化tomcat。

Disconf 配置中心的使用过程相关推荐

  1. disconf mysql_Disconf配置中心配置

    1.Disconf配置中心需要的环境配置 (1) 配置java.maven环境,并安装mysql,reids,zookeeeper,Nginx 2.配置java,maven环境变量 3.创建目录mkd ...

  2. 用友云微服务架构下配置文件管理利器:配置中心

    微服务架构是这几年IT领域的一个高频词汇,越来越多的项目和应用正在以微服务的思想进行重构.相比于单体应用和SOA架构,微服务优势也逐渐凸显,被广大架构师和技术人员引入和推崇.当然,单体应用.SOA.微 ...

  3. 用了这么久配置中心,还不知道长轮询是什么?

    前言 传统的静态配置方式想要修改某个配置时,必须重新启动一次应用,如果是数据库连接串的变更,那可能还容易接受一些,但如果变更的是一些运行时实时感知的配置,如某个功能项的开关,重启应用就显得有点大动干戈 ...

  4. 微服务架构中配置中心的选择

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:r6d.cn/XsTR 目前公司内部微服务架构基础设 ...

  5. 微服务架构 为什么需要配置中心

    https://kuaibao.qq.com/s/20180530G1O8RC00?refer=spider 一.介绍 在系统架构中,和安全.日志.监控等非功能需求一样,配置管理也是一种非功能需求.配 ...

  6. 五Spring Cloud Alibaba基于Nacos构建分布式配置中心

      1.什么是Nacos 以下部分解释摘自于Nacos官方文档: Nacos 致力于帮助您发现.配置和管理微服务.Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据 ...

  7. SpringCloudConfigServer配置中心使用与刷新详解

    一.为什么不用nacos 之前项目使用的是nacos作为配置中心,使用过程中,还是有不少问题的: 选用nacos,是同时使用了nacos的服务注册与发现,但是在生产环境,多个项目均出现了脑裂故障,包括 ...

  8. Spring Cloud Config 配置中心实践过程中,你需要了解这些细节!

    本文导读: Spring Cloud Config 基本概念 Spring Cloud Config 客户端加载流程 Spring Cloud Config 基于消息总线配置 Spring Cloud ...

  9. 分布式配置中心 Disconf 安装配置

    分布式配置中心 Disconf 安装配置 前提准备 CentOS 服务器一台 MySQL 数据库一台 安装依赖软件 安装 JDK 安装 Git 安装 Maven 安装 Zookeeeper 安装 To ...

最新文章

  1. sql 纵向求和_sql列统计求和
  2. 图解操作系统研发与探索教程
  3. MySQL数据库SYS CPU高的可能性分析
  4. sqlserver循环like变量_numba从入门到精通(6)—numba与循环与并行
  5. end to end testing
  6. Android系统驱动【转】
  7. CF1110F Nearest Leaf
  8. 怎么将电脑中的声音录制成WAV格式
  9. 自学python编程笔记本推荐-这件神器,每个 Python入门学习者都值得一试
  10. java int类型 BigDecimal类型转成汉字金额大写
  11. 三峡学院计算机调剂,重庆三峡学院2019考研调剂信息公告
  12. 利用 ChatGPT 简化微信聊天内容
  13. 树莓派-从入手到使用(一):树莓派入手操作第一步
  14. R7 4800U对比R5 4600U性能差距
  15. Android百度定位获取经纬度
  16. 3DsMAX期末紧急复习
  17. 本地图片转网图url专用
  18. Pytorch LSTM 长短期记忆网络
  19. wps android 版 参数控制介绍,最强手机办公软件 Android版金山WPS首评测
  20. python-pygame实现飞机大战-3-发射子弹以及击中敌机

热门文章

  1. 使用JS实现无刷新读取json接口数据
  2. 经常坐在电脑前的人怎样预防颈椎病?
  3. CentOS7 安装JDK
  4. 微信域名检测实用工具
  5. 软件模板开发与定制开发有什么区别?
  6. 由数量众多照片拼贴而成的马赛克图片
  7. 苁蓉杞地海参瘦肉汤的做法
  8. sql server中的成语接龙
  9. 李开复: 算法的力量
  10. 1.Metasploit介绍和模块