[英]How do I load ${catalina.home}/conf/application.properties in a Spring / Tomcat webapp?
如何在Spring / Tomcat ${catalina.home}/conf/application.properties
應用${catalina.home}/conf/application.properties
中加載${catalina.home}/conf/application.properties
?
環顧StackOverflow和Google,我發現許多討論都聲稱有可能。 但是,它對我不起作用。 根據我的研究建議,我的Spring 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
因此,路徑顯然是正確的。 這是webapp安全性還是Tomcat服務器配置問題?
該location
一的context:property-placeholder
是一種資源 ,這意味着如果你只提供一個文件路徑(而不是用協議的完整URL),那么路徑將針對web應用程序的根目錄解決-這是嘗試加載/Users/username/Servers/apache-tomcat-6.0.36/webapps/<appname>/Users/username/Servers/apache-tomcat-6.0.36/conf/application.properties
,該文件不存在。 如果在file:
前面加上前綴file:
它將按要求工作:
<context:property-placeholder location="file:${catalina.home}/conf/application.properties"/>
對於基於注釋的配置,可以使用:
@PropertySource("file:${catalina.home}/conf/application.properties")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.