如何在spring上下文配置文件中找到属性文件

时间:2013-08-23 09:26:20

标签: spring spring-mvc

我正在使用spring web mvc项目,我将所有与Spring相关的文件放在WEB-INF\spring下,包括ormlite.xmljdbc.properties

现在,我想在jdbc.propertiesLike this中找到ormlite.xml文件:

<context:property-placeholder location="/WEB-INF/spring/jdbc.properties"/>

但是当我运行应用程序时,它会告诉我:

Could not load properties

找不到属性文件。

有什么问题?

4 个答案:

答案 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"/>

请注意添加 文件: 前缀。