簡體   English   中英

刷新 Spring Boot 自動配置的屬性

[英]Refresh Spring Boot Auto-Configured Properties

我可以動態刷新 Spring Boot 的自動配置設置使用的屬性嗎?

例如,我設置了以下屬性(通過雲配置)來自動配置dataSource

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

現在,如果我更改配置服務器上的密碼道具,並點擊/refresh端點,我可以看到更新的道具已檢索,但DataSource未刷新。

我知道我可以手動配置DataSource bean 並確保它們屬於RefreshScope ,但我希望找到一種方法將自動配置的屬性標記為“可刷新”。 我有一些用例,我想為除DataSources之外的其他 bean 刷新 Spring Boot 使用的 props,手動設置其中一些 bean 可能會很痛苦。

我想我說得太早了,至少就我的DataSource示例而言。 正在使用更新的道具創建新的數據庫連接。

這很有意義,尤其是在查看此處的文檔時

這並沒有重新連接我擁有的一些spring.cloud.stream.bindings屬性,但在這種情況下,我可能可以用@RefreshScope解決這個問題。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM