如何將我的spring xml配置移動到我的java web應用程序之外?如何在我的Web應用程序之外移動我的spring xml配置?
我想將我的spring.xml存儲在我的web應用程序之外,因此我不必創建應用程序的新構建來更改配置。
這樣做的最好方法是什麼?
如何將我的spring xml配置移動到我的java web應用程序之外?如何在我的Web應用程序之外移動我的spring xml配置?
我想將我的spring.xml存儲在我的web應用程序之外,因此我不必創建應用程序的新構建來更改配置。
這樣做的最好方法是什麼?
由於羅德約翰遜解釋了它在this thread:
可以使用
classpath:
前綴從classpath加載,與正常春聽衆或啓動的servlet。 Spring的資源抽象使得這成爲可能。您可以自由組合和匹配來自WEB-INF
和類路徑的資源。
所以,把配置文件放在classpath中的web應用外,並宣佈在web.xml
如下:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springContext*.xml</param-value>
</context-param>
我認爲,依靠類路徑比使用絕對路徑更便攜。
這絕對是獨立應用的好方法。對於Web應用程序,但是,爲了在classpath中的東西,但Web應用程序文件夾之外你必須讓你的上下文中可用,這些可能是理想的(除非有問題的應用程序是唯一的一個),整個服務器。 – ChssPly76 2009-09-21 20:45:15
更準確地說,這意味着要提供給所有的webapps(不知道這是你的意思與「整個服務器」)的背景文件。但我同意這可能確實不理想。 – 2009-09-21 20:58:57
可以將其移動到某個文件夾(外Web應用程序結構),並明確指定範圍內的位置指向背景下,文件夾在您的web.xml
:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>file:/full/path/to/context.xml</param-value>
</context-param>
這就是說,最好的方式做這可能完全不是這樣做的:-)而是重新考慮如何部署應用程序(例如,您可以創建包含更改而不是全面WAR的「修補程序」或「升級」部署單元)。指定絕對路徑往往比它的價值更麻煩。
爲什麼要爲此構建複雜的問題,這是一個部署問題。大多數容器以「分解」形式部署WAR,這意味着文件系統上的某處是spring.xml文件。
如果您想更新它,只需找到實際位置,然後將新的spring.xml複製到舊的位置。然而,與此同時,你的戰爭仍然是最重要的「真相之源」。
WAR的使用和部署往往非常簡單,所以將您的配置儘可能捆綁在WAR中是有好處的。
因此,您可以通過在容器後面進行更新並直接對其進行編輯(或複製)來更新spring.xml。最後,在WAR外部使用spring.xml意味着它可用於所有的WAR,並且如果您以後決定在系統中添加另一個WAR,則可能難以將這兩個文件隔離,因爲它們是沒有長時間停留在特定的WAR上。
理想情況下,您要存儲在哪裏? – skaffman 2009-09-21 20:39:09
理想情況下,我們將使用傳遞給tomcat的變量來確定它的位置。硬編碼路徑雖然是可以接受的選擇。 – ScArcher2 2009-09-21 20:45:44