单体SpringBoot整合Apollo实现@ConfigurationProperties属性刷新

本文主要分享了单体SpringBoot(非SpringCloud)整合Apollo中,如何实现@ConfigurationProperties的属性刷新。

一、问题描述

在SpringCloud微服务中,相信很多小伙伴都用过以下方式去解决下@ConfigurationProperties的属性刷新

但在单体SpringBoot项目中就不好使了,因为EnvironmentChangeEvent的全路径是org.springframework.cloud.context.environment.EnvironmentChangeEvent,该类在spring-cloud-context-xxx.jar中,而单体SpringBoot应用通常情况下是不依赖SpringCloud的jar的

二、解题思路

问:能否把EnvironmentChangeEvent的逻辑从spring-cloud-context-xxx.jar复制出来使用?

答:是可以的


1.找到EnvironmentChangeEvent的消费者逻辑所在类ConfigurationPropertiesRebinder(属性刷新的逻辑就在这里

2.将ConfigurationPropertiesRebinder所依赖的类也复制出来,发现只有ConfigurationPropertiesBeans

3.所以需要复制的类只有3个:EnvironmentChangeEvent、ConfigurationPropertiesRebinder、ConfigurationPropertiesBeans

4.在ConfigurationPropertiesBeans.isRefreshScoped中有一段逻辑依赖RefreshScope,这块逻辑不需要,所以可以直接注释掉

5.PropertiesRefresher中引入复制出来的类EnvironmentChangeEvent,大功告成


在使用这种方式之前,作者本人也在网上找了很多资料,没能找到比较好的实现方式。突发灵感地往使用springcloud源码的方向试了一下,发现还真的可行。在此记录以分享各位码友。


怎么样?如果你觉得有用的话,还不快快收藏起来!!!

展开阅读全文

页面更新:2024-05-02

标签:属性   大功告成   注释   路径   灵感   源码   逻辑   思路   方式   发现

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top