如何在弹簧上下文配置文件中定位特性文件



我使用的是spring-web mvc项目,我将所有与spring相关的文件都放在WEB-INFspring下,包括一个ormlite.xml和一个jdbc.properties

现在我想在ormlite.xml中找到jdbc.properties文件,如下所示:

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

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

Could not load properties

它找不到属性文件。

问题出在哪里?

来自春季论坛:

问题是/WEB-INF不可访问,因为它不在根目录中对于路径,必须使用与测试用例中使用的路径相同的路径(包括src/main/webapp部分,但这会破坏您的应用程序停止运行)。

我建议您将jdbc.properties移到src/main/resources目录,并简单地使用classpath:prefix来加载属性。

代码:

<context:property-placeholder location="classpath:jdbc.properties"/>

上面的代码假设它们位于类路径的根上(即当它们在src/main/resources中时它们在哪里)。

我希望这能帮助其他人。

我遇到了同样的问题-类路径之外的属性文件。

我的解决方案:

首先定义一个属性bean:

<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="location">
            <value>/WEB-INF/your.properties</value>
        </property>
    </bean>

然后在属性占位符中引用它:

<context:property-placeholder properties-ref="configProperties" />

对我来说效果非常好!

代替:

<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"

我认为您缺少指示Spring如何尝试加载属性的前缀。我认为你的定义应该是:

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

请注意添加了文件:前缀。

相关内容

  • 没有找到相关文章

最新更新