java - 检测 RefreshScope bean 的刷新

标签 java spring spring-boot spring-cloud

据我了解,当您使用 Spring Cloud 的 RefreshScope 注解时,会注入(inject)一个对数据的代理,如果支持信息发生更改,代理会自动更新。不幸的是,我需要找到一种在刷新发生时收到警报的方法,以便我的代码可以从刷新范围的 bean 中重新读取数据。

简单示例:计划任务的计划存储在 Cloud Config 中。除非您等到任务的下一次执行(这可能需要一段时间)或定期轮询配置(这看起来很浪费),否则无法知道配置是否已更改。

最佳答案

EnvironmentChangeEventEnvironment 发生变化时被触发.就 Spring Cloud Config 而言,这意味着它在 /env 时触发。调用执行器端点。

RefreshScopeRefreshedEvent刷新 @RefreshScope 时触发beans 已经启动,例如/refresh调用执行器端点。

这意味着您需要注册 ApplicationListener<RefreshScopeRefreshedEvent>像那样:

@Configuration
public class AppConfig {

    @EventListener(RefreshScopeRefreshedEvent.class)
    public void onRefresh(RefreshScopeRefreshedEvent event) {
        // Your code goes here...
    }

}

关于java - 检测 RefreshScope bean 的刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35322439/

相关文章:

java - 如何在 Android 中查看和记录 GCM 消息的完整结构?

java - 我可以在 IntelliJ 中使用 webjar 而无需构建项目吗?

java - @Secured 服务方法和 spring ws

mysql - 在 ManyToMany 双向映射中 findAll() 获取行,每行包含其子项,而子项又包含其自身

java - 如何将 application.yml 转换为命令行标志?

java - 使用 ConfigurationProperties 以通用方式填充 Map

java - Zuul 路由无法与功能区 listOfServers 正确映射(没有 Eureka)

java - 移位位值

java - 有没有办法在不初始化的情况下创建原始数组?

java - 如何从响应实体获取正文