Spring Boot 配置中心配置自动刷新后触发其他初始化操作

2020-12-30  本文已影响0人  zornil

需求背景:通过nacos配置中心获取对应的配置信息,然后通过bean的方式注入属性值,其中部分属性值需要根据配置中的类型进行转换,达到直接获取通过处理后的属性值的目的。

如图所示:其中rules是在配置中心获取的,grayRuleInfos是需要提供给其他服务使用的,需要将rules转换成grayRuleInfos这个List对象。

目前可以通过三种方式实现

1、通过重写set方法,在自动初始化bean注入rules的时候完成grayRuleInfos的初始化(不够友好)。

2、通过EventListener监听下发的配置修改事件,然后修改对应的grayRuleInfos初始化(获取到的是上一次rules的值)

@EventListener

public void envChangeListener(EnvironmentChangeEvent event) {}

3、通过@PostConstruct,比较优雅的实现grayRuleInfos的初始化。

主要是因为在该bean上加了@RefreshScope,每次配置变更都是销毁原来的bean,然后重新将bean初始化(注意这里是延迟加载,只有在使用的时候才会触发PostConstruct对应的操作)。

上一篇下一篇

猜你喜欢

热点阅读