2

我在部署 Web 应用程序时收到以下错误/异常:

org.springframework.beans.factory.BeanInitializationException:无法加载属性;嵌套异常是 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" />

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

在此处输入图像描述

我也尝试过,将“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> 

请看下面: 在此处输入图像描述

但是我仍然遇到相同的错误/异常。

请指教

谢谢

4

5 回答 5

4

我遇到了同样的问题,

修复: 解决 你的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/所以它将您的文件名连接为路径

于 2014-05-27T11:16:09.460 回答
2

我认为你应该改变你的代码并像这样放置属性:

    <bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="/WEB-INF/jdbc.properties" />
</bean>
于 2012-09-02T16:38:17.700 回答
1

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"

通知文件:此处为前缀。这很重要。

现在您可以将文件拖放到文件系统上的任何位置并更改路径,而无需更改代码

于 2016-04-20T01:41:35.997 回答
0
<bean 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    <property name="location">
        <value>WebAppProps.properties</value>
    </property>
</bean>

只需将文件放在目录根classes目录的类路径中即可。

于 2012-05-16T22:56:38.640 回答
0

你有两个选择:

如果您不需要获取 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>
于 2014-01-28T16:44:19.763 回答