我可以动态刷新Spring的自动配置设置所使用的属性吗?
例如,我设置了以下属性(通过云配置)来自动配置dataSource
spring.datasource.username=user1
spring.datasource.password=test现在,如果我更改配置服务器上的密码支柱,并点击/refresh端点,我可以看到更新后的DataSource已被检索,但DataSource没有刷新。
我知道我可以手动配置DataSource bean,并确保它们属于RefreshScope,但我希望找到一种将自动配置的属性标记为“刷新”的方法。我有一些用例需要刷新Spring使用的道具,用于DataSources以外的其他bean,手动设置这些bean可能会很痛苦。
发布于 2018-06-08 20:27:13
我觉得我说得太快了,至少就我的DataSource例子来说是这样。正在使用更新的道具创建一个新的db连接。
这是有意义的,特别是在查看docs 这里时。
这没有重新连接我所拥有的一些spring.cloud.stream.bindings属性,但在这种情况下,我可能可以用@RefreshScope解决这个问题。
发布于 2021-03-02 22:03:15
在自动配置bean不可变的情况下,需要设置一个配置属性(初始化后不要更改属性)
您可以放置需要刷新的类的列表(集合),并且无法控制源代码,可以将它们放在属性:spring.cloud.refresh.extra-refreshable下面
例如:
spring
cloud
refresh
extra-refreshable:
- org.springframework.mail.javamail.JavaMailSenderImpl请参阅:https://cloud.spring.io/spring-cloud-static/Greenwich.SR1/single/spring-cloud.html#refresh-scope
https://stackoverflow.com/questions/50688245
复制相似问题