我的理解是,当您使用Spring Cloud的RefreshScope
注释时,会向数据的代理注入数据,并且如果更改了后备信息,代理会自动更新。不幸的是,我需要找到刷新时发出警报的方式,以便我的代码可以重新读取刷新范围bean中的数据。检测RefreshScope bean的刷新
简单示例:计划存储在云配置中的计划任务。除非您等到下次执行任务(可能需要一段时间)或定期轮询配置(这似乎很浪费),否则无法知道配置是否已更改。
我的理解是,当您使用Spring Cloud的RefreshScope
注释时,会向数据的代理注入数据,并且如果更改了后备信息,代理会自动更新。不幸的是,我需要找到刷新时发出警报的方式,以便我的代码可以重新读取刷新范围bean中的数据。检测RefreshScope bean的刷新
简单示例:计划存储在云配置中的计划任务。除非您等到下次执行任务(可能需要一段时间)或定期轮询配置(这似乎很浪费),否则无法知道配置是否已更改。
当刷新时EnvironmentChangeEvent
会在你的配置客户端待提高,如文档指出:
应用程序将监听的
EnvironmentChangedEvent
和反应 在一对夫妇的标准方法的变化(附加ApplicationListener
s可由用户以正常 的方式添加为@Bean
)。
所以,你可以定义的事件侦听此事件:
public class YourEventListener implements ApplicationListener<EnvironmentChangeEvent> {
@Override
public void onApplicationEvent(EnvironmentChangeEvent event) {
// do stuff
}
}
我想到一个办法可以与@RefreshScope
注释所有的bean有由配置外部化和@Value ("${your.prop.key}")
注释中注释性质。
这些属性在配置上更改时更新。
工作。谢谢! –
EnvironmentChangedEvent在启动时也被调用,这对我来说是毁了东西 – user2798694
@ user2798694'event.getSource()'会给你事件最初发生的对象。也许通过检查源可以过滤掉启动事件 –