为WAR配置PropertySourcesPlaceholderConfigurer

时间:2013-06-10 09:26:32

标签: java spring properties war

我正在尝试创建一个可以使用spring属性文件的WAR,但我似乎遇到了一些问题。

我可以看到我的属性文件在target的基本目录结构中,当我发生爆炸战时在WAR中。但是,当我尝试制作正常的WAR并部署它时,我找不到资源,特别是:

org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [service.properties] cannot be opened because it does not exist

从Jetty我没有这样的问题。

这是资源的Spring java配置:

@Bean
    public static PropertySourcesPlaceholderConfigurer propertyPlaceHolderConfigurer() {

        PropertySourcesPlaceholderConfigurer props = new PropertySourcesPlaceholderConfigurer();
        props.setLocations(new Resource[] { new ClassPathResource("service.properties") });
        return props;
    }

这是我POM的相关部分。我添加了WAR配置,因为这就是maven似乎要做的here,但它似乎没有帮助。

<build>
                <resources>
                    <resource>
                        <directory>src/main/config/local</directory>
                        <includes>
                            <include>**/*.properties</include>
                        </includes>
                    </resource>
                </resources>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <version>2.3</version>
                        <goals>
                            <goal>war</goal>
                        </goals>
                        <configuration>
                            <webResources>
                                <resource>
                                    <!-- this is relative to the pom.xml directory -->
                                    <directory>src/main/config/local</directory>
                                    <includes>
                                        <include>**/*.properties</include>
                                    </includes>
                                </resource>
                            </webResources>
                        </configuration>
                    </plugin>

任何人都知道我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

您确定您的属性文件位于WEB-INF文件夹中吗?如果它在外面并且只包含在war文件的根目录中,那么它将不会在类路径中找到。请参阅maven-war-plugin documentation - 覆盖您需要添加的默认位置(war文件的根目录)

<targetPath>WEB-INF</targetPath>