我正在按照这里描述的方法进行操作:https : //github.com/jeroenbellen/blog-manage-and-reload- spring-properties,唯一的区别是在我的情况下,这些属性正在多个类中使用,所以我有将它们全部放在一个实用程序类中CloudConfig,我使用getter引用其变量。这是该类的样子:
CloudConfig
@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()。我可以在启动时很好地加载属性,但无法动态更新它们。谁能告诉我我做错了吗?如果不是制作该配置类,而是按照本教程描述的那样做就可以了,那么一切都可以正常工作,但是我很难适应它的用例。谁能告诉我我所缺少的吗?
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重新初始化)。