我目前正在使用spring boot进行应用程序开发。在这种情况下,它会自动配置大多数bean,包括数据源。但是我需要自定义数据源配置,因此创建了一个新的DatabaseConfig,如下所示。
@Configuration
public class DatabaseConfig {
@Bean
public DataSource dataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.url(...);
dataSourceBuilder.username(...);
dataSourceBuilder.password(...);
dataSourceBuilder.driverClassName(...);
return dataSourceBuilder.build();
}
}
这很好用。
现在我有一个spring mvc Integration测试来测试其余的端点。运行测试时我需要忽略上面的数据库配置,以便spring boot auto配置嵌入式数据源(HSQL db在类路径上)
我怎样才能做到这一点?
答案 0 :(得分:3)
您可以为每个数据库创建第二个数据库并设置配置文件。在运行测试时,您只需要在Test类上面写@ActiveProfile("nameOfProfile")
。例如:
@Bean
@Profile("One")
public DataSource dataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.url(...);
dataSourceBuilder.username(...);
dataSourceBuilder.password(...);
dataSourceBuilder.driverClassName(...);
return dataSourceBuilder.build();
@Bean
@Profile("Two")
public DataSource dataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.url(...);
dataSourceBuilder.username(...);
dataSourceBuilder.password(...);
dataSourceBuilder.driverClassName(...);
return dataSourceBuilder.build();
@SpringBootTest
@ActiveProfile("Two")
public class Test{
}
答案 1 :(得分:0)
您可以为测试创建数据库配置并将测试bean注释为主要:
@Configuration
public class TestDatabaseConfig {
@Bean
@Primary
public DataSource dataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.url(...);
dataSourceBuilder.username(...);
dataSourceBuilder.password(...);
dataSourceBuilder.driverClassName(...);
return dataSourceBuilder.build();
}
}