如果我将它们设置为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
有关为何未使用此值的任何想法?
答案 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>