2013-08-23 183 views
4

我使用的是spring web mvc项目,并且我将所有弹簧相关文件放在WEB-INF\spring之下,其中包括ormlite.xmljdbc.properties如何在弹簧上下文配置文件中找到属性文件

现在我想找到jdbc.properties文件中的ormlite.xmlLike this

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

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

Could not load properties

这不可能找到属性文件。

什么问题?

回答

9

从春季论坛:

的问题是,/ WEB-INF是无法访问的,因为它是没有根的路径 ,当你在使用你必须使用相同的路径你测试用例 (包括src/main/webapp部分,但会使您的应用程序 不能运行)。

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

代码:

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

上面的代码假定它们是在类路径的根(这是 其中它们时,他们在src/main/resources是)。

我希望这可以帮助别人。

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"

+0

不起作用。看到这个:[http://i.imgur.com/QmpQv6K.png] – hguser

+0

您使用的是哪个版本的Spring? –

+0

我正在使用3.2.3.RELEASE – hguser

0

我想您错过了指示Spring如何尝试加载属性的前缀。我认为你的定义必须是:

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

注意添加文件:前缀。

+0

我试图添加'file:'前缀,它不起作用。 – hguser

+0

你有没有试过file:WEB-INF/spring/jdbc.properties?即错过了开始的斜杠? –

+0

是的,我已经尝试了他们两个。 – hguser

1

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

我的解决办法:

首先定义一个属性的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" /> 

完美的作品很适合我!