Spring 3.0无法加载属性

我部署Web应用程序时得到以下错误/exception:

org.springframework.beans.factory.BeanInitializationException:无法加载属性; 嵌套的exception是java.io.FileNotFoundException:无法打开ServletContext资源[/ WEB-INF / WebAppProps]

下面是我在applicationContext.xml中使用指向WebAppsProps.properties文件的上下文标记

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" p:location="classpath:/WEB-INF/WebAppProps.properties" /> 

我也用过:

  <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" p:location="/WEB-INF/WebAppProps.properties" /> 

该文件实际上在文件系统&下面是我的项目结构的快照:

在这里输入图像说明

我也尝试过,在类path中放置“WebAppProps.properties”,并使用这两个变体

变化1:

 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>classpath:WebAppProps.properties</value> </property> </bean> 

变化2:

 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>WebAppProps.properties</value> </property> </bean> 

请看下面: 在这里输入图像说明

但是,我仍然得到相同的错误/exception。

请指教

谢谢

同样的问题,我越过,

修复: 解决你的bean如下所示:

 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>/WEB-INF/database.properties</value> </property> </bean> 

WEB-INF下创建文件夹属性,看起来像WEB-INF/properties/database.properties

因为PropertyPlaceholderConfigurer类首先在/WEB-INF/下默认搜索属性文件夹,所以它将文件名连接为路径

我认为你应该改变你的代码,并把这样的属性:

  <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="/WEB-INF/jdbc.properties" /> </bean> 

Spring 4这是我将如何配置属性文件

 @Configuration @PropertySources({ @PropertySource("classpath:application.properties"), @PropertySource(value = "${application.properties}", ignoreResourceNotFound = false) }) public class WebServiceConfig { --- } 

当在setenv.sh中启动我的tomcat时,我将路径定义为

 -Dapplication.properties=file:location-of-file/application.properties" 

注意文件:前缀在这里。 这很重要。

现在,您可以将文件放在文件系统的任何位置,并且可以在不更改代码的情况下更改路径

 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>WebAppProps.properties</value> </property> </bean> 

只要把文件放在类路径的根目录下。

你有两个选择:

如果你不需要获取bean,但只有属性:

 <context:property-placeholder location="/WEB-INF/WebAppProps.properties" file-encoding="UTF-8"/> 

或者如果你需要这个bean(可能会发生你想注入你的属性bean,如果你需要阅读许多道具…)

 <bean id="configProperty" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="locations"> <list> <value>/WEB-INF/config.properties</value> <value>/WEB-INF/setup.properties</value> </list> </property> <property name="ignoreResourceNotFound" value="true"/> </bean>