Spring属性优先

时间:2012-11-27 09:17:59

标签: java spring properties intellij-idea

我有标准文件夹结构:

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来编译和运行测试

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

即使在运行单元测试时,src / main / resources中的文件也始终添加到类路径中。请参阅:Common strategies when defining Spring beans for different environments