我正在尝试使用Spring Cloud Config Server即时刷新应用程序范围内的属性。我将Config Server嵌入到Spring Boot Client应用程序中,并且该应用程序完美启动。
当我尝试更新属性时,例如:spring.datasource.url
,然后我发送POST
请求刷新执行器:http://localhost:9190/management/refresh
,我得到了预期的结果:
[
"spring.datasource.url"
]
我还创建了一个用于测试目的的控制器:
@Value("${spring.datasource.url}")
private String message;
@RequestMapping("/message")
String getMessage() {
return this.message;
}
但是,当我在http://localhost:9290/message上按下此控制器时,我仍在获得${spring.datasource.url}
的旧未刷新值。
我必须在控制器的类上显式添加一个@RefreshScope才能获取更新的值。
我的问题是:如何在整个应用程序范围内实现?还是对于每个用例? :
@Value
s jdbcTemplate
的我的datasource
<context:property-placeholder>
做我的春季整合工作我正在使用:
<spring-cloud.version>Edgware.SR1</spring-cloud.version>
<spring-boot-version>1.5.9.RELEASE</spring-boot-version>
答案 0 :(得分:2)
@RefreshScope
来重新创建Bean,然后从Spring Environment获取更新的值。另一种选择是使用@ConfigurationProperties
个bean,它们自动在/refresh
上重新绑定,而无需使用@RefreshScope
。没有选项可以自动使所有bean @RefreshScope
。