簡體   English   中英

如何在運行時更新SpringBoot應用程序的配置,而無需重新加載整個ApplicationContext

[英]How to update configuration of SpringBoot application at runtime without reloading whole ApplicationContext

我試圖找出如何在Spring Boot應用程序中動態更新/重新加載外部化配置,而無需重新啟動整個應用程序。

大多數建議涉及在更改外部化配置后重新加載ApplicationContext,但這相當於重新啟動整個應用程序,因此這並非真正有用。

通過SpringBoot參考文檔閱讀,我找到了第23.7Typesafe配置屬性

如果我理解正確,這允許定義簡單的POJO類,它將您的應用程序(外部化)配置值保存為屬性。

至少在理論上,此方案可用於僅將bean綁定到所需的配置POJO,並且在配置更改時只更新POJO中的值。 組件可以在下次訪問POJO上的getter時輕松獲取更改...

但是,我還沒有設法弄清楚如何啟用這種行為。 當相關配置發生變化時,是否有一些明顯的方法可以動態更新使用@ConfigurationProperties注釋的組件?

聽起來你正在尋找由Spring Cloud提供的@RefreshScope Spring Cloud文檔

當配置發生變化時,標記為@RefreshScope Spring @Bean將得到特殊處理。 這解決了有狀態bean的問題,只有在初始化時才會注入其配置。 例如,如果DataSource在通過Environment更改數據庫URL時具有打開的連接,我們可能希望這些連接的持有者能夠完成他們正在做的事情。 然后,當有人從池中借用連接時,他會獲得一個帶有新URL的連接。

暫無
暫無

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

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