@RefreshScope不起作用-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()。我可以在启动时很好地加载属性,但无法动态更新它们。谁能告诉我我做错了吗?如果不是制作该配置类,而是按照本教程描述的那样做就可以了,那么一切都可以正常工作,但是我很难适应它的用例。谁能告诉我我所缺少的吗?

回答:

尝试改用@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重新初始化)。

以上是 @RefreshScope不起作用-Spring Boot 的全部内容, 来源链接: utcz.com/qa/436481.html

回到顶部