我部署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>