一、原生API
1.Zookeeper API
2.Apache Curator api
3.基于Zookeeper实现配置中心、利用ZNode节点存储数据的功能
二、本地配置
1.基本上所有的配置信息都会存放到Spring生态中的Environment对象中的属性配置源中
(1)解析app.properties文件并且放到env中 作为Spring开发者,在业务代码中肯定随时都要用属性
(2)@Value依赖注入,就可以对字段进行赋值操作,这样就可以后置处理器以及evn关联起来了
(1)使用BeanPostProcessor解析类上的@Value字段
(2)获取到字段上的@Value字段
(3)解析@Value字段的value属性值,比如age
(4)从environment中的属性配置源OriginTrackedMapPropertySource中寻找age的key
(5)根据key获取到对应的value值
(6)通过field反射的方式设置value值
2.本地配置存在的问题
(1)对于多个重复的配置,发现每个项目中都需要进行维护,比如username passwoord, 如果哪天修改了用户名和密码
(2)Spring Boot项目肯定需要使用该配置信息,项目获取配置内容咯
3.Spring Boot项目启动
4.apache curator:获取数据 1 mobile 6000 业务使用
5.能否将获取到的数据保存到spring的evn的属性配置源中
6.a-Spring Boot源码既然不能修改,那怎么将curator拉取数据的内容,放到Spring Boot的执行流程中呢?
7.Spring生态中的常见扩展机制:就是不修改Spring源码的前提下,把想要的代码
7.1ApplicationContextInitializer
7.2事件监听机制
7.3BeanPostProcessor
7.4BeanFactoryPostProcessor
7.5ApplicationRunner...
7.6初始化器的加载8.回调
9.@Value只赋值一次,后续的更新没有重新赋值,怎么办?
10.解决方案
(1)让Spring重新执行一次refresh方法,不行 AutowriteAnnoPostProcessor
(2)我们来写一个解决方案
11.要给这些字段重新赋值:什么重新赋值呢?当收到watch通知的时候,通知赋值
12.Spring Cloud Zookeeper
13.前提:安装好zk server
14.zk server 单独的中间件
15手写的配置中心:拉取数据 && 动态更新数据
15.1Spring cloud zookeeper:spring cloud团队实现
15.2dubbo + zookeeper: dubbo团队实现
15.3spring cloud alibaba nacos:ali nacos团队实现
(1)拉取数据
(2)数据更新之后的重新赋值的问题
16放到优先级更高的bootstap中,优先级最高
17.PropertySourceBootstrapConfiguration
18.Spring Cloud Zookeeper
19.扩展机制的入口 监听机制
(1)销毁ProductController
(2)根据最新的属性创建ProductController
版权归原作者 孰能生巧-LWP 所有, 如有侵权,请联系我们删除。