0

Spring 无法在 src/main/resources 中找到我的属性文件(MyPropFile.properties)并抛出如下异常

java.io.FileNotFoundException: class path resource [file*:/src/main/resources/MyPropFile.properties] cannot be opened because it does not exist

但是,如果我将 MyPropFile.properties 放在项目的根目录(MyProject/MyPropFile.properties),spring 可以找到它并且程序可以正确执行。

如何配置它以便我可以将 .properties 文件放在 src/main/resources 中

这是我的命名空间

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
    http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-3.0.xsd
    ">

这是我的豆子

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

爪哇:

@Value("${message.fromfile}")
      private String message;

提前谢谢各位。

4

4 回答 4

2

尝试这个。在您的应用程序配置文件中创建此条目:

<beans xmlns:context="http://www.springframework.org/schema/context"
 .....
 xsi:schemaLocation="...
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-3.0.xsd
 ....>

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

并访问消息属性:

@Value("${messageFromfile}")
private String message;
于 2013-10-14T11:20:02.660 回答
1

你应该使用

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

如果没有classpath:前缀,PropertyPlaceholderConfigurer则尝试将资源解析为文件资源,因此正在您当前的工作目录中查找它。

于 2013-10-14T10:44:12.410 回答
1

我希望 Maven 将其复制到目标目录并适当设置类路径。我不希望 Maven在编译时搜索源目录。

于 2013-10-14T10:36:28.480 回答
0

作为@ryanp解决方案的附录,这是处理文件资源的正确且经过清理的方法,文件资源应位于类路径位置下。

Maven 将自动收集配置的文件资源并将它们附加到您的运行时类路径持有者,以便可以解析以classpath:为前缀的资源。

否则,如果您发现自己的 Maven 堆栈无法流式传输文件资源,您可以挂钩到 Maven 的资源配置并映射您的文件位置,如下所示:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>*.properties</include>
            </includes>
        </resource>
    </resources>
</build>
于 2015-02-03T10:49:24.357 回答