我们正在使用Spring Cloud外部化微服务(基于Spring Boot)的配置。
根据我对Spring Cloud的理解,要使Bean从 Config服务器加载刷新/更新的值,我们需要在 Spring Cloud Client 中做两件事:>
@RefreshScope
,以从属性文件中读取值
使用@Value
场景: 我们有100多个使用@Value从属性文件读取值的类。 我必须标记所有使用@RefreshScope注释启用的bean刷新。
如何避免在所有这些类上添加@RefreshScope
注释。
是否有任何捷径或Spring Cloud功能可以解决这种情况。
答案 0 :(得分:1)
您可以将@Values
封装到一个(或几个)@RefreshScoped
的ConfigurationService bean中,然后将此服务自动连接到您的类中。这样,您只有少量的请求范围的Bean,并且您的服务可以保持单例状态。
答案 1 :(得分:0)
您可能想研究称为@ConfigurationProperties
的Spring Boot功能。它旨在更好地组织几个外部配置选项。
根据this Github issue,它应在不使用@RefreshScope
的情况下适用于春季云。
编辑(对评论的反应):也许您缺少@ConfigurationProperties
的要点。使用此注释,您将不会在其他配置类中使用它。您将只有一个专门的类(或几个类)来阅读和提供属性。其他配置类将注入此配置持有人Bean。