[英]Closing ApplicationContext still not shutting down springboot application
[英]How to update configuration of SpringBoot application at runtime without reloading whole ApplicationContext
我試圖找出如何在Spring Boot應用程序中動態更新/重新加載外部化配置,而無需重新啟動整個應用程序。
大多數建議涉及在更改外部化配置后重新加載ApplicationContext,但這相當於重新啟動整個應用程序,因此這並非真正有用。
通過SpringBoot參考文檔閱讀,我找到了第23.7章Typesafe配置屬性 。
如果我理解正確,這允許定義簡單的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.