@ActiveProfiles值未分配给config

时间:2014-02-26 21:26:29

标签: spring jpa

如果我将它们设置为VM args,我的Active配置文件正常工作。

我有一个测试,我想用@ActiveProfiles("local")

以下是我正在使用的类注释:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/jpaContext.xml")
@ActiveProfiles("local")
public class MyServiceTest {

当我尝试跑步时,我在跟踪中得到以下内容:

Caused by: java.io.FileNotFoundException: class path resource [properties/database-configuration-${spring.profiles.active}.properties] cannot be opened because it does not exist

有关为何未使用此值的任何想法?

1 个答案:

答案 0 :(得分:5)

当您在配置文件中解析占位符值spring.profiles.active时,Spring默认为该值的系统属性,并在将其设置为系统属性时获取值。

现在,在您的测试中,由于未设置此系统属性,因此占位符未得到彻底解析。一个修复可以通过bean配置文件以不同的方式加载属性:

<beans profile="local">
    <context:property-placeholder location="classpath:database-config-local.properties"/>
</beans>

<beans profile="dev">
    <context:property-placeholder location="classpath:database-config-dev.properties"/>
</beans>