![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
从0到1实现配置中心Config
文章平均质量分 54
子夜2104
这个作者很懒,什么都没留下…
展开
-
2024-5-14-从0到1手写配置中心Config之基于数据库的分布式锁
源码:https://github.com/midnight2104/midnight-config/tree/v5。假如9129先启动,观察日志成功获取到锁了,并在定时任务重不断重入。使用注解@PostConstruct初始化,使用数据源创建连接。尝试获取锁,获取成功,locked=true,否则为false。使用@PreDestroy注解销毁bean时,连接回滚,并关闭。开启定时任务,每隔5秒执行一次。锁状态locked表示已经持有。原创 2024-05-27 20:30:00 · 339 阅读 · 0 评论 -
2024-5-10-从0到1手写配置中心Config之Spring Value热更新
实现postProcessBeforeInitialization()方法。通过工具类找到所有带有@Value的bean,遍历每个字段。通过helper工具类抽取注解上面的表达式,构建SpringValue对象并保存起来。源码:https://github.com/midnight2104/midnight-config/tree/v4。实现ApplicationListener接口,在配置变更时,更新所有的spring value。扫描所有的Spring value,保存起来。原创 2024-05-26 19:30:00 · 322 阅读 · 0 评论 -
2024-5-9-从0到1手写配置中心Config之@ConfigurationProperties热更新
当EnvironmentChangeEvent事件发布之后,会重新绑定PropertySource,调用getProperty()方法获取最新配置。发现版本发生了变化,重新获取了配置,并发布了EnvironmentChangeEvent事件。发起http请求,从config-server获取所有配置信息。原创 2024-05-25 19:45:00 · 382 阅读 · 0 评论 -
2024-5-6-从0到1手写配置中心Config之实现配置中心客户端
在demo工程中,使用了@Value的方式和@ConfigurationProperties配置的方式。新建一个web工程,在启动类中使用注解@EnableMidnightConfig启动配置中心客户端。配置中心的客户端只是一个jar包,不是web项目,不能自动扫描注解包,需要手动注册bean。启动工程,查看日志,两种配置方式都是dev500,说明配置中心起作用了。程序启动时,debug可以看到,配置中心的值加载到env的最前面了。工程中默认的配置值midnight.a=a100。原创 2024-05-24 19:00:00 · 420 阅读 · 1 评论 -
2024-5-4-从0到1手写配置中心Config之基于h2的config-server
源码: https://github.com/midnight2104/midnight-config。在web控制台可以看到sql已经初始化完成,crud接口也比较简单。初始化语句创建一个config表,保存服务配置信息。新建的web工程中添加h2的依赖。controller类。原创 2024-05-23 21:01:50 · 170 阅读 · 0 评论