gpt4 book ai didi

spring-boot - 如何将@DataJpaTest与多个数据源一起使用

转载 作者:行者123 更新时间:2023-12-02 01:54:35 30 4
gpt4 key购买 nike

我尝试使用注释 @DataJpaTest 编写集成测试。我有两个数据源:主要和次要(类配置)结果我有一个错误:

expected single matching bean but found 2: primaryDataSource,secondary

然后我尝试添加注释

@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.AUTO_CONFIGURED)

并且使用AUTO_CONFIGURED,只有由属性配置的数据源将被替换,而是嵌入h2,我看到方言:HHH000400:使用方言:org.hibernate.dialect.Oracle10gDialect

如何将@DataJpaTest与多个数据源一起使用?

public class DataSourcesConfig {


@Bean
@Primary
@ConfigurationProperties(prefix="spring.datasource")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}

@Bean(name = "secondary")
@ConfigurationProperties(prefix="datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}

}

最佳答案

我有一个@Primary配置类

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
basePackages = {"com.something"}
)
public class APrimaryDBDBConfiguration {

@Primary
@Bean
@ConfigurationProperties("spring.datasource")
public DataSourceProperties dataSourceProperties() {
return new DataSourceProperties();
}

@Primary
@Bean(name = "dataSource")
@ConfigurationProperties("spring.datasource.hikari")
public HikariDataSource dataSource() {
return dataSourceProperties()
.initializeDataSourceBuilder()
.type(HikariDataSource.class).build();
}

@Primary
@Bean(name = "entityManagerFactory")
@Profile("!test")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("dataSource") DataSource dataSource) {
return builder
.dataSource(dataSource)
.packages("com")
.persistenceUnit("some_persistence_unit")
.build();
}

@Primary
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(
@Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}

稍后,在我的存储库测试类中:

@RunWith(SpringRunner.class)
@DataJpaTest
@ActiveProfiles("test")
@Import(APrimaryDBDBConfiguration.class)

最后,我的测试属性有:

spring.jpa.hibernate.ddl-auto=create-drop

关于spring-boot - 如何将@DataJpaTest与多个数据源一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39167811/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com