小编典典

@RefreshScope不起作用-Spring Boot

spring-boot

我正在按照这里描述的方法进行操作:https : //github.com/jeroenbellen/blog-manage-and-reload-
spring-properties,唯一的区别是在我的情况下,这些属性正在多个类中使用,所以我有将它们全部放在一个实用程序类中CloudConfig,我使用getter引用其变量。这是该类的样子:

@Configuration
@RefreshScope
public class CloudConfig {

    static volatile int count; // 20 sec

    @Value("${config.count}")
    public void setCount(int count) {
        this.count = count;
    }

    public static int getCount() {
        return count;
    }

}

count在类似的其他类中使用该变量CloudConfig.getCount()。我可以在启动时很好地加载属性,但无法动态更新它们。谁能告诉我我做错了吗?如果不是制作该配置类,而是按照本教程描述的那样做就可以了,那么一切都可以正常工作,但是我很难适应它的用例。谁能告诉我我所缺少的吗?


阅读 7266

收藏
2020-05-30

共1个答案

小编典典

尝试改用@ConfigurationProperties。例如

@ConfigurationProperties(prefix="config")
public class CloudConfig {

    private Integer count;

    public Integer count() {
        return this.count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }

}

Spring Cloud参考文档指出:

@RefreshScope(在技术上)在@Configuration类上工作,但可能导致令人惊讶的行为:例如,这并不意味着该类中定义的所有@Beans本身都是@RefreshScope。具体来说,依赖于这些bean的任何东西都不能依赖于刷新启动时对其进行更新,除非它本身在@RefreshScope中(在刷新中将其重建并重新注入其依赖项,此时它们将被刷新)从刷新的@Configuration重新初始化)。

2020-05-30