我使用Spring 2.5.6。我有一個bean,其屬性是通過PropertyPlaceholderConfigurer從屬性文件分配的。我想知道是否可以在屬性文件被修改時更新bean的屬性。例如,會有一些週期性的過程檢查屬性文件的最後修改日期,如果它發生了變化,則重新加載bean。具有從屬性文件自動刷新的spring bean屬性
我想知道是否已經有東西可以滿足我的要求。如果不是,解決這個問題的最好方法是什麼?
感謝您的幫助。
我使用Spring 2.5.6。我有一個bean,其屬性是通過PropertyPlaceholderConfigurer從屬性文件分配的。我想知道是否可以在屬性文件被修改時更新bean的屬性。例如,會有一些週期性的過程檢查屬性文件的最後修改日期,如果它發生了變化,則重新加載bean。具有從屬性文件自動刷新的spring bean屬性
我想知道是否已經有東西可以滿足我的要求。如果不是,解決這個問題的最好方法是什麼?
感謝您的幫助。
也可能考慮使用Spring的PropertyOverrideConfigurer。可以重新讀取這些屬性並在一些輪詢/調度bean中重新應用它。
它取決於實際配置的bean如何使用這些屬性。例如,他們可能會間接將它們緩存在某處。
這樣做的一種方法是在應用程序中嵌入一個groovy控制檯。 Here's一些說明。他們做起來很簡單,順便說一句 - 即使我不熟悉groovy,我也花了很少的時間。
一旦你這樣做,你可以簡單地進入控制檯,並實時更改實時應用程序中的值。
如果你想在運行時使用動態屬性,可能另一種方法是JMX。
您可能會嘗試使用bean的自定義作用域,以便在屬性文件的更改上重新創建bean。看我的more extensive answer here。
Spring Cloud Config有能力在運行時通過Spring Cloud Bus和使用Cloud Config Server更改配置屬性。配置文件或.properties或.yml文件是從Spring應用程序「外部化」的,而是從應用程序啓動時連接到的Spring Cloud Config Server中檢索的。 Cloud Config Server從GIT倉庫中檢索相應的配置.properties或.yml文件(還有其他存儲解決方案,但GIT是最常見的)。然後,您可以通過更改GIT repo配置文件的內容來在運行時更改配置 - Cloud Config Server通過Spring Cloud Bus向任何Client Spring應用程序廣播更改,並且更新這些應用程序的配置而無需重新啓動應用程序。你可以在這裏找到一個簡單的例子:https://github.com/ldojo/spring-cloud-config-examples
看來這是最直接的方法,而且我們最終會做。謝謝 – 2009-03-05 08:38:15