探索--appllo配置中心,如何动态加载配置
如何动态加载配置问题涉及到两方面:
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配置中心,如何动态加载配置相关推荐
- Nacos配置中心-多配置文件加载
添加配置,加载多个配置文件 spring.cloud.nacos.config.server-addr=127.0.0.1:8848spring.profiles.active=dev# 该配置影响统 ...
- springboot 加载配置信息(静态)
springboot 加载配置信息(静态) 举例:动态设置验证码过期时间 application-uat.properties配置(文件路径:/src/main/resources/applicati ...
- log4j和log4j2怎么动态加载配置文件
应用场景与问题 当项目在运行时,我们如果需要修改log4j 1.X或者log4j2的配置文件,一般来说我们是不能直接将项目停止运行再来修改文件重新部署的.于是就有这样一个问题:如何在不停止当前项目的运 ...
- log4j动态加载配置文件
应用场景与问题 当项目在运行时,我们如果需要修改log4j 1.X或者log4j2的配置文件,一般来说我们是不能直接将项目停止运行再来修改文件重新部署的.于是就有这样一个问题:如何在不停止当前项目的运 ...
- Asp .NetCore 从数据库加载配置(一)
一般来说,Asp .NetCore 应用从官方默认的appsetting.json文件中读取就好,而且利用option模式中的 IOptionsSnapSot<T>.IOptionsMon ...
- 魔方APP项目-02-服务端项目搭建,创建manage.py文件、构建全局初始化函数创建app应用对象、通过终端脚本启动项目、项目加载配置、数据库初始化、日志初始化、蓝图初始化
服务端项目搭建 新建项目目录mofangapi,并创建虚拟环境 mkvirtualenv mofang 安装开发中使用的依赖模块 pip install flask==0.12.4 pip insta ...
- 解决URL存在特殊符号、异步线程池配置、动态加载lib下所有jar包
一.解决URL存在特殊符号|{}?&.URL中包含%2F.URL中包含%5C import lombok.extern.slf4j.Slf4j; import org.springframew ...
- java web配置dll文件_JavaWeb项目中dll文件动态加载方法解析(详细步骤)
相信很多做Java的朋友都有过用Java调用JNI实现调用C或C++方法的经历,那么Java Web中又如何实现DLL/SO文件的动态加载方法呢.今天就给大家带来一篇JAVA Web项目中DLL/SO ...
- 在.Net framework中动态加载Assembly的loadFromRemoteSources配置
简介 在插件类型的应用开发中,我们可能会在程序中动态加载一个assembly文件,创建其中的类对象并使用. 这时,就涉及到了CAS(code access security)和信任沙盒. 一般,我们的 ...
最新文章
- java 导出 jar lib_java使用IDEA引入外部jar和导出可执行jar文件的方法
- Goods:注册页面保存User功能发送邮件以及激活功实现
- 3、基于多播、安全认证的corosync集群(VIP、Httpd、Filesystem)
- php实现socket
- Classical Inheritance in JavaScript
- 在Latex使用條列式清單itemize , enumerate , description
- php 打包上传的文件,PHP单文件上传原理及上传函数的打包
- android 提供的方法,Android编程之创建自己的内容提供器实现方法
- Java消息中间件--ActiveMq,RabbitMQ,Kafka
- Spring : BeanDefinition
- NASM汇编语言与计算机系统03-实模式-屏幕显示HelloWorld(mov,jmp,time,dd,dw,$$)
- 对中文版“Siri”打个招呼吧!
- 解析UML的要点与应用
- html如何判断ie版本,在html中判断IE浏览器的版本
- 郑州市城市建成区20年时空变化特征提取与分析
- 图片保存为YUV格式
- extmail mysql数据库 重启_linux下安装和配置extmail
- python数学公式编辑工具_GNU TeXmacs
- SAP开发-同时定义同名的工作区、内表 OCCURS 0 WITH HEADER LINE
- wordpress图像大小_如何在WordPress中添加图像积分(逐步操作)
热门文章
- 一个传播 Worm.Win32.Otwycal.c / Worm.Win32.Infei.a 的网站v2
- 计算机培训班价格多少钱?
- Gateway杂谈:线上引流和灰度发布
- 写一个用遗传算法解决VRP问题的代码
- Windows Batch 常用命令
- 设计UI的语言——XAML
- 为什么有时优盘是只读模式_u盘怎么解除只读模式
- C/C++ 获取当前时间(最全方法)
- C++中sprintf_s与sprintf的不同
- HTTP方法的安全性和幂等性