无法在spring上下文

时间:2016-05-07 10:03:35

标签: java spring tomcat7

我无法将文件路径加载到我的应用程序中。任何人都可以帮助我。

这是spring xml config:

<context:property-placeholder location="file:${globalproplocation}"
        ignore-unresolvable="true" ignore-resource-not-found="true" order="-1" />

我已将此添加到catalina.sh下的JAVA_OPTS中,如下所示:

JAVA_OPTS="-XX:MaxPermSize=4096m  -XX:PermSize=1024m -Dglobalproplocation=/Users/admin/properties/temp.properties"

但是有些怎么没被拿起来,这是我的tomcat日志。

    <Loading properties file from ServletContext resource [/${globalproplocation}]>
    2016-05-07 02:52:24,089 WARN [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer] -
<Could not load properties from ServletContext resource [/${globalproplocation}]: 
Could not open ServletContext resource [/${globalproplocation}]>

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

问题是当Spring Context启动并在配置文件中看到占位符$ {globalproplocation}时,它会尝试加载这样的文件路径:$ {globalproplocation}。问题是当你像-Dglobalproplocation=/Users/admin/properties/temp.properties那样传递一个paramiter时,xml不会被修改,并且上下文不再尝试加载一个不存在的文件。为了解决这个问题,您可以使用maven和资源processiong插件,配置如下。

<build>
    <properties>
            <globalproplocation>/Users/admin/properties/temp.properties</globalproplocation>
    </properties>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>

    <plugins>
        <!-- Facilitates downloading source and javadoc in Eclipse -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <!-- specify UTF-8, ISO-8859-1 or any other file encoding -->
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

然后你可以执行命令mvn clean package,并且构建结果将使xml文件被转换,并且palceholder将被替换为正确的路径。

我希望这对你有帮助。

答案 1 :(得分:0)

spring xml config:

`<bean 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="propname">
        <value>test.properties</value>
    </property>
</bean>`

备用选项使用classpath

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