在我的application.yml中,我有以下配置(能够使用docker / docker-compose在不同环境中自定义变量):
spring:
datasource:
url: ${SPRING_DATASOURCE_URL}
username: ${SPRING_DATASOURCE_USERNAME}
password: ${SPRING_DATASOURCE_PASSWORD}
问题是Spring在@DataJpaTest时尝试自动配置这个数据源,所以使用嵌入式H2数据库,显然它不喜欢占位符....
我试图排除一些自动配置:
@DataJpaTest(excludeAutoConfiguration =
{DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
HibernateJpaAutoConfiguration.class})
但是,没有任何作用,缺少entityManagerFactory,......
我可能会使用配置文件,但如果可能的话,我更喜欢另一种解决方案。
答案 0 :(得分:0)
您是否尝试过定义自己的数据源bean?
@Import(JpaTestConfiguration.class)
@DataJpaTest
@Configuration
public class JpaTestConfiguration{
//...
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.h2.Driver");
dataSource.setUrl("jdbc:h2:mem:db;DB_CLOSE_DELAY=-1");
dataSource.setUsername("sa");
dataSource.setPassword("");
return dataSource;
}
//...
}