我們正在開發基於Spring的Web應用程序(在20個JVM上運行)。 Web應用程序在環境上運行不同(稱Dev,QA,測試,壓力,生產)。配置框架建議
我們正在研究設計與下面的設計目標應用程序的配置框架...
爲配置框架
- 支持的繼承模型的設計目標:
如果config屬性是靜態的,它應該能夠被全局定義,並繼承到所有環境。環境應該能夠覆蓋繼承屬性的值。 - 消除冗餘:
應該只需查看一個位置即可查看,修改和添加配置屬性。這應該可以降低添加或修改屬性時丟失文件的風險。 - 在運行時管理和維護屬性的能力。
應該能夠輕鬆地在內存中的一對多JVM中更改屬性,並且可以在重新啓動JVM時保留該更改。 - 調試能力。
爲了確定功能開關的當前狀態等,您應該能夠輕鬆地將屬性轉儲出內存(一對多屬性)。 - 降低不同INT,QA,STRESS環境不同步且難以部署和維護的可能性。
- 支持開發的簡易性以及部署過程。這種改變不應該對本地開發人員有效開發的能力產生負面影響。相反,它應該使它更容易。
有關在Spring中實現這種配置框架的任何建議/建議?
我不明白你的回答如何解決被問到的問題。特別是,我同意將「可變」配置從「接線」配置中分離出來並將其外部化是很好的做法,但您如何建議可變配置和配線配置最終一起使用?你是否同意Jeff提出的使用「PropertyPlaceholderConfigurer」的建議?或者你建議採用不同的方法? – 2011-04-07 11:44:25
我同意PropertyPlaceholderConfigurer在這裏是一個有用的工具,當然我們把它作爲我剛剛描述的實現的一部分,但它只是一個更大的方法來達到所提到的要求(除運行時之外,這是頂層的附加層)。[更多] – 2011-04-07 16:25:30
要一起使用這些配置,請設置容器,以便它添加一個額外的類路徑,並將變量config作爲部署的一部分複製到額外的類路徑中。因此,environment.properties文件(例如,)將被複制到那裏,然後由applicationContext.xml使用PPC進行拾取。但是你也可以在那裏放置其他的非Spring配置,比如log4j.xml,它經常因環境而異(例如,在dev和功能測試中調試,但在系統測試和產品中關閉)。這種方法有助於配置漂移,因爲配置集中管理並在每次部署時重新推送。 – 2011-04-07 16:29:27