【发布时间】:2018-11-14 05:47:37
【问题描述】:
我可以动态刷新 Spring Boot 的自动配置设置使用的属性吗?
例如,我设置了以下属性(通过云配置)来自动配置dataSource:
spring.datasource.username=user1
spring.datasource.password=test
现在,如果我在配置服务器上更改密码属性,并点击 /refresh 端点,我可以看到更新后的属性已检索,但 DataSource 未刷新。
我知道我可以手动配置 DataSource bean 并确保它们属于 RefreshScope,但我希望找到一种方法将自动配置的属性标记为“可刷新”。我有一些用例,我想刷新 Spring Boot 用于除 DataSources 之外的其他 bean 的道具,并且手动设置其中一些 bean 可能会很痛苦。
【问题讨论】:
-
我不确定是否将自动配置的属性设为“可刷新”,但您可以尝试推送通知是否适合您。 cloud.spring.io/spring-cloud-config/1.4.x/single/…
-
如果上面的东西不起作用,你可以在spring cloud config的github页面上提出功能请求。这可能是一个很好的功能。
-
实际上,推送通知和对
/actuator/refresh端点的请求确实刷新了数据源属性并重新创建了数据库连接。有关详细信息,请参阅下面的答案。
标签: spring spring-boot spring-cloud-config spring-config