4

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

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

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

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

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

4

2 回答 2

1

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

这很有意义,尤其是在查看此处的文档时

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

于 2018-06-08T20:27:13.973 回答
0

如果 Autoconfigured 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

于 2021-03-02T22:03:15.840 回答