如何动态加载配置问题涉及到两方面:

1.程序如何感知到配置被修改,或者说被修改的配置信息是如何发送到各服务器上的业务应用的

2.spring 中如何替换原来的配置,对于@Value修饰的属性如何赋值,如何重新赋值。对于singleton,prototype 类型的Bean,都需要哪些操作。

过程是曲折,慢慢解刨:

1.同事给了一个网址:https://blog.csdn.net/lz710117239/article/details/81028981,这里介绍了一个叫PropertySourcesProcessor的东西。

2.发现了PropertySourcesConstants类,该类存储的是一些属性名,包括常用的 appollo.bootstrap.enable

3.通过  PropertySourcesConstants.APOLLO_BOOTSTRAP_ENABLED 找到哪里使用它,发现了 ApolloAutoConfiguration 、ApolloApplicationContextInitializer

4.ApolloAutoConfiguration 上有  @Configuration 正好用来注册 ConfigPropertySourcesProcessor。 其继承至 PropertySourcesProcessor ,这样就解释了,PropertySourcesProcessor的启动过程

5.ApolloApplicationContextInitializer的功能,以及启动过程需要再进一步研究一下。

最后的结论:

配置更新:

PropertySourcesProcessor 实例化 AutoUpdateConfigChangeListener  
SpringValue 的方法 update 做更新  ,内部是放射的实现直接设置属性,或者调用方法设置属性

SpringValue实例化:

抽象类ApolloProcessor 实现了BeanPostProcessor接口,在每个bean完成实例化之后postProcessBeforeInitialization()方法将被调用,在这里根据实际需要创建SpringValue。SpringValue可针对属性进行创建,也可以针对方法进行创建。对于@Value注解,有一个继承自ApolloProcessor的实现SpringValueProcessor

探索--appllo配置中心,如何动态加载配置相关推荐

  1. Nacos配置中心-多配置文件加载

    添加配置,加载多个配置文件 spring.cloud.nacos.config.server-addr=127.0.0.1:8848spring.profiles.active=dev# 该配置影响统 ...

  2. springboot 加载配置信息(静态)

    springboot 加载配置信息(静态) 举例:动态设置验证码过期时间 application-uat.properties配置(文件路径:/src/main/resources/applicati ...

  3. log4j和log4j2怎么动态加载配置文件

    应用场景与问题 当项目在运行时,我们如果需要修改log4j 1.X或者log4j2的配置文件,一般来说我们是不能直接将项目停止运行再来修改文件重新部署的.于是就有这样一个问题:如何在不停止当前项目的运 ...

  4. log4j动态加载配置文件

    应用场景与问题 当项目在运行时,我们如果需要修改log4j 1.X或者log4j2的配置文件,一般来说我们是不能直接将项目停止运行再来修改文件重新部署的.于是就有这样一个问题:如何在不停止当前项目的运 ...

  5. Asp .NetCore 从数据库加载配置(一)

    一般来说,Asp .NetCore 应用从官方默认的appsetting.json文件中读取就好,而且利用option模式中的 IOptionsSnapSot<T>.IOptionsMon ...

  6. 魔方APP项目-02-服务端项目搭建,创建manage.py文件、构建全局初始化函数创建app应用对象、通过终端脚本启动项目、项目加载配置、数据库初始化、日志初始化、蓝图初始化

    服务端项目搭建 新建项目目录mofangapi,并创建虚拟环境 mkvirtualenv mofang 安装开发中使用的依赖模块 pip install flask==0.12.4 pip insta ...

  7. 解决URL存在特殊符号、异步线程池配置、动态加载lib下所有jar包

    一.解决URL存在特殊符号|{}?&.URL中包含%2F.URL中包含%5C import lombok.extern.slf4j.Slf4j; import org.springframew ...

  8. java web配置dll文件_JavaWeb项目中dll文件动态加载方法解析(详细步骤)

    相信很多做Java的朋友都有过用Java调用JNI实现调用C或C++方法的经历,那么Java Web中又如何实现DLL/SO文件的动态加载方法呢.今天就给大家带来一篇JAVA Web项目中DLL/SO ...

  9. 在.Net framework中动态加载Assembly的loadFromRemoteSources配置

    简介 在插件类型的应用开发中,我们可能会在程序中动态加载一个assembly文件,创建其中的类对象并使用. 这时,就涉及到了CAS(code access security)和信任沙盒. 一般,我们的 ...

最新文章

  1. java 导出 jar lib_java使用IDEA引入外部jar和导出可执行jar文件的方法
  2. Goods:注册页面保存User功能发送邮件以及激活功实现
  3. 3、基于多播、安全认证的corosync集群(VIP、Httpd、Filesystem)
  4. php实现socket
  5. Classical Inheritance in JavaScript
  6. 在Latex使用條列式清單itemize , enumerate , description
  7. php 打包上传的文件,PHP单文件上传原理及上传函数的打包
  8. android 提供的方法,Android编程之创建自己的内容提供器实现方法
  9. Java消息中间件--ActiveMq,RabbitMQ,Kafka
  10. Spring : BeanDefinition
  11. NASM汇编语言与计算机系统03-实模式-屏幕显示HelloWorld(mov,jmp,time,dd,dw,$$)
  12. 对中文版“Siri”打个招呼吧!
  13. 解析UML的要点与应用
  14. html如何判断ie版本,在html中判断IE浏览器的版本
  15. 郑州市城市建成区20年时空变化特征提取与分析
  16. 图片保存为YUV格式
  17. extmail mysql数据库 重启_linux下安装和配置extmail
  18. python数学公式编辑工具_GNU TeXmacs
  19. SAP开发-同时定义同名的工作区、内表 OCCURS 0 WITH HEADER LINE
  20. wordpress图像大小_如何在WordPress中添加图像积分(逐步操作)

热门文章

  1. 一个传播 Worm.Win32.Otwycal.c / Worm.Win32.Infei.a 的网站v2
  2. 计算机培训班价格多少钱?
  3. Gateway杂谈:线上引流和灰度发布
  4. 写一个用遗传算法解决VRP问题的代码
  5. Windows Batch 常用命令
  6. 设计UI的语言——XAML
  7. 为什么有时优盘是只读模式_u盘怎么解除只读模式
  8. C/C++ 获取当前时间(最全方法)
  9. C++中sprintf_s与sprintf的不同
  10. HTTP方法的安全性和幂等性