【发布时间】:2016-12-10 23:02:46
【问题描述】:
我有一个具有以下配置的集成测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("integration-test")
@ContextConfiguration(classes = { PersistenceJpaConfig.class, ContextConfig.class, ServiceConfig.class, WebConfig.class})
@WebAppConfiguration
public class LeadsIntegrationTest {
...
}
PersistenceJpaConfig 类如下:
@Configuration
@EnableTransactionManagement
@ComponentScan({ "org.persistence", "org.common.persistence" })
@PropertySource({ "persistence-${spring.profiles.active}.properties" })
@EnableJpaRepositories(basePackages = org.persistence.dao")
public class PersistenceJpaConfig {
...
}
当活动配置文件为“dev”时,${spring.profiles.active} 可以正常解析,但在 @ActiveProfiles("integration-test) 中设置为“integration-test”时,它无法解析。 persistence-dev.properties 和 persistence-integration-test.properties 位于 src/main/resources . dev 的属性有 mysql 配置,而 integration-test 有 h2 嵌入式配置,用于运行与开发数据隔离的集成测试。当测试运行时,我得到以下信息:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.profiles.active' in string value "persistence-${spring.profiles.active}.properties"
这是怎么回事?
【问题讨论】:
标签: spring-boot spring-profiles