我正在使用spring web mvc项目,我将所有与Spring相关的文件放在WEB-INF\spring
下,包括ormlite.xml
和jdbc.properties
。
现在,我想在jdbc.properties
,Like this中找到ormlite.xml
文件:
<context:property-placeholder location="/WEB-INF/spring/jdbc.properties"/>
但是当我运行应用程序时,它会告诉我:
Could not load properties
找不到属性文件。
有什么问题?
答案 0 :(得分:9)
来自Spring论坛:
问题是/ WEB-INF无法访问,因为它不在根目录中 在路径中,您必须使用与在测试用例中使用的路径相同的路径 (包括src / main / webapp部分,但这将破坏您的应用程序 从跑步)。
我建议你将jdbc.properties移动到src / main / resources 目录,只需使用classpath:前缀来加载属性。
代码:
<context:property-placeholder location="classpath:jdbc.properties"/>
上面的代码假设它们位于类路径的根目录(即 它们在
src/main/resources
)时的位置。
我希望这可以帮助别人。
答案 1 :(得分:1)
我遇到了同样的问题 - 类路径之外的属性文件。
我的解决方案:
首先定义属性bean:
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location">
<value>/WEB-INF/your.properties</value>
</property>
</bean>
然后在property-placeholder中引用它:
<context:property-placeholder properties-ref="configProperties" />
非常适合我!
答案 2 :(得分:0)
而不是:
<context:property-placeholder location="/WEB-INF/spring/jdbc.properties"/>
使用:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/spring/jdbc.properties"/>
您的属性将在Spring文件中提供,并且不要忘记添加命名空间:xmlns:p="http://www.springframework.org/schema/p"
答案 3 :(得分:0)
我认为你错过了指示Spring如何尝试加载属性的前缀。我认为你的定义必须是:
<context:property-placeholder location="file:/WEB-INF/spring/jdbc.properties"/>
请注意添加 文件: 前缀。