刷新 Spring 引导自动配置的属性



我可以动态刷新Spring Boot的自动配置设置使用的属性吗?

例如,我设置了以下属性(通过云配置(以自动配置dataSource

spring.datasource.username=user1
spring.datasource.password=test

现在,如果我在配置服务器上更改密码 prop,并点击/refresh端点,我可以看到更新的 prop 被检索,但DataSource没有刷新。

我知道我可以手动配置DataSource豆子并确保它们属于RefreshScope,但我希望找到一种方法将自动配置的属性标记为"可刷新"。我有一些用例,我想刷新 Spring Boot 用于除DataSources之外的其他 bean 的道具,手动设置其中一些 bean 可能会很痛苦。

我认为我说得太早了,至少就我DataSource的例子而言。正在使用更新的道具创建新的数据库连接。

这是有道理的,尤其是在查看此处的文档时

这并没有重新连接我拥有的一些spring.cloud.stream.bindings属性,但在这种情况下,我可能会用@RefreshScope解决问题。

有一个配置属性要设置,以防自动配置的 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

相关内容

  • 没有找到相关文章

最新更新