如何加载${catalina.home}/conf/application.propertiesSpring/Tomcat webapp?
在StackOverflow和Google上四处看看,我看到很多讨论声称它是可能的.但是,这对我不起作用.根据我的研究建议,我的Spring applicationContext.xml文件包含以下行:
<context:property-placeholder location="${catalina.home}/conf/application.properties"/>
Run Code Online (Sandbox Code Playgroud)
但是我在日志中得到了这个:
Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/Users/username/Servers/apache-tomcat-6.0.36/conf/application.properties]
Run Code Online (Sandbox Code Playgroud)
从日志条目中我可以看到${catalina.home}正在正确扩展.当我在applicationContext.xml文件中手动展开它时,它返回相同的错误.以下内容按预期返回application.properties文件的内容:
cat /Users/username/Servers/apache-tomcat-6.0.36/conf/application.properties
Run Code Online (Sandbox Code Playgroud)
所以道路显然是正确的.这是webapp安全性还是Tomcat服务器配置问题?
Ian*_*rts 22
该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:它作为前缀,它将按你的要求工作:
<context:property-placeholder location="file:${catalina.home}/conf/application.properties"/>
Run Code Online (Sandbox Code Playgroud)
小智 13
对于基于注释的配置,您可以使用:
@PropertySource("file:${catalina.home}/conf/application.properties")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15446 次 |
| 最近记录: |