2

我有标准的 Maven 文件夹结构:

src/main/java  
src/main/resources  
src/test/java  
src/test/resources  

我的 appicationContext 包含以下内容:

<!-- load properties files -->
<context:property-placeholder location="classpath*:*.properties"/>

我已经定义了 2 个hibernate.properties文件 - 一个src/main/resources用于src/ test/resources. 我曾预计,当我运行测试时,我的测试hibernate.properties将覆盖生产hibernate.properties。而不是加载两个文件并使用生产版本:

Loading properties file from file [D:\projects\video_crawler_v3\out\test\core\hibernate.properties]
Loading properties file from file [D:\projects\video_crawler_v3\out\production\core\hibernate.properties]  

如何正确设置我的属性文件?我正在使用 Intellij IDEA 编译和运行测试

4

2 回答 2

2

选项之一是 Spring Profiles http://blog.springsource.com/2011/02/11/spring-framework-3-1-m1-released/

在您的 context.xml 中放置两个“属性”版本,例如:

<beans>

   ... your beans

    <beans profile="prod">
        <context:property-placeholder location="classpath:/hibernate.properties" />
    </beans>

    <beans profile="test">
        <context:property-placeholder location="classpath:/test-hibernate.properties" />
    </beans>
</beans>

使用 -Dspring.profiles.active=test 激活所需的配置文件。

注意:使用 www.springframework.org/schema/beans/spring-beans-3.1.xsd

于 2012-11-27T09:31:01.357 回答
1

src/main/resources 中的文件总是添加到类路径中,即使在运行单元测试时也是如此。请参阅:为不同环境定义 Spring bean 时的常用策略

于 2012-11-27T09:44:16.283 回答