2013-07-12 53 views
13

如何在Spring/Tomcat Web應用程序中加載${catalina.home}/conf/application.properties

環顧StackOverflow和谷歌我看到很多討論聲稱這是可能的。但是,它只是不適合我。在與我的研究諮詢熱線我的春節applicationContext.xml文件包含以下行:

<context:property-placeholder location="${catalina.home}/conf/application.properties"/> 

但我得到這個在日誌中:

Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/Users/username/Servers/apache-tomcat-6.0.36/conf/application.properties] 

從日誌條目我可以看到${catalina.home}正在擴大正確。當我在applicationContext.xml文件中手動擴展它時,它將返回相同的錯誤。以下內容按預期返回application.properties文件的內容:

cat /Users/username/Servers/apache-tomcat-6.0.36/conf/application.properties 

所以路徑顯然是正確的。這是一個Web應用程序安全性或Tomcat服務器配置問題?

回答

20

一個context:property-placeholderlocation資源,這意味着,如果你只提供一個文件路徑(而不是一個完整的URL與協議),那麼路徑將針對web應用程序的基本目錄解析 - 它試圖加載/Users/username/Servers/apache-tomcat-6.0.36/webapps/<appname>/Users/username/Servers/apache-tomcat-6.0.36/conf/application.properties,它不存在。如果您有file:前綴它,它會工作,你需要:

<context:property-placeholder location="file:${catalina.home}/conf/application.properties"/> 
+0

@lan在我的情況$ {} catalina.base不取代實際路徑 – aProgrammer

11

對於基於註解的配置,你可以使用:

@PropertySource("file:${catalina.home}/conf/application.properties") 
相關問題