實際的問題是:有沒有辦法讓XmlWebApplicationContext使用相對於上下文位置的路徑加載資源?爲了清楚起見,我們假設「上下文位置」是通過setConfigLocation()
方法指定的第一個文件的位置。通過Spring指定相對資源路徑XmlWebApplicationContext
詳細解釋如下:
我在web層中使用Spring MVC,在中層使用Spring IOC。如Spring Documentation中所述分層次地定義適當的上下文:網絡材料在my-servlet.xml
中定義,並且服務等在services.xml
中定義,其通過ContextLoaderListener
加載。中間層可以與Web層一起部署(例如,整個事件在ServletContainer中運行)或單獨部署(在這種情況下,services.xml
由定義遠程存根的remote-services.xml
取代)。整個安裝完美的作品,除了以下問題:
我必須位於同一文件夾中services.xml
需要被訪問某些資源(額外的XML文件,你有什麼)說服務。這些資源在services.xml
中使用相對路徑被指定爲相關性。中間層獨立部署可以正常工作,但不能在servlet容器內部署時使用。在後一種情況下,中間層上下文被實例化爲XmlWebApplicationContext
,它加載了所有基於servlet上下文根的資源,這意味着我必須在所有我想要避免的東西前加上前綴。使用PropertyPlaceholderConfigurer
也會出現類似的問題。
我知道我可以通過從類路徑加載資源來解決這個問題,但這也不是很理想 - 對於獨立部署,這意味着我需要將配置文件夾添加到類路徑中,對於Web部署,它意味着所有內容都必須複製到WEB-INF/classes中。
任何想法?
謝謝你的答覆。在某些情況下,將資源與java文件放在一起是完全正確的(我爲Hibernate查詢做了這些工作......),但是對於在部署過程中可以更改的東西(比如`PropertyPlaceholderConfigurer`使用的屬性文件),這是非常不方便的。它必須是可訪問的(例如不在jar等內部) - 因此,我必須將它放在/ WEB-INF/classes中,或者在獨立部署期間將它所在的「conf」文件夾添加到類路徑中。 – ChssPly76 2009-07-14 16:40:07