刷新Spring引导自动配置属性

刷新Spring引导自动配置属性,spring,spring-boot,spring-cloud-config,spring-config,Spring,Spring Boot,Spring Cloud Config,Spring Config,我可以动态刷新Spring Boot的自动配置设置所使用的属性吗 例如,我设置了以下属性(通过云配置)来自动配置数据源: spring.datasource.username=user1 spring.datasource.password=test 现在,如果我更改配置服务器上的密码道具,并点击/refresh端点,我可以看到已更新的道具已被检索,但数据源未被刷新 我知道我可以手动配置数据源bean,并确保它们属于刷新范围,但我希望找到一种方法将自动配置的属性标记为“可刷新”。我有一些用例,

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

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

spring.datasource.username=user1
spring.datasource.password=test
现在,如果我更改配置服务器上的密码道具,并点击
/refresh
端点,我可以看到已更新的道具已被检索,但
数据源
未被刷新


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

我想我说得太快了,至少就我的
数据源
示例而言。正在使用更新的道具创建新的db连接

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


这并没有重新连接我的一些
spring.cloud.stream.bindings
属性,但在这种情况下,我可能可以通过
@RefreshScope
解决这个问题,因为如果自动配置的bean是不可变的(初始化后不要更改属性)

您可以将需要刷新且无法控制源代码的类的列表(集合)放在属性下:
spring.cloud.refresh.extra refreshable

e、 g:


请参阅:

我不确定是否要将自动配置的属性设置为“可刷新”,但如果推送通知对您有效,您可以尝试。如果上面的方法不起作用,您可以在SpringCloudConfig的github页面上请求功能。这可能是一个很好的特性。实际上,推送通知和对
/exactor/refresh
端点的请求都刷新了数据源属性并重新创建了数据库连接。更多细节见下面我的答案。我仍然面临同样的问题。当我尝试记录新的JDBCURL时,它是属性文件中的新值,但数据源仍然是使用旧的JDBCURL创建的。我们是否需要手动刷新/杀死/重新创建数据源bean?
spring
  cloud
    refresh
      extra-refreshable:
        - org.springframework.mail.javamail.JavaMailSenderImpl