簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM