Make Batch JPA auto-configuration back off without a DataSource

Fixes gh-17465
This commit is contained in:
Andy Wilkinson
2019-07-09 15:46:45 +01:00
parent c5241f0e82
commit acd9b61c8e
2 changed files with 18 additions and 1 deletions

View File

@@ -35,12 +35,12 @@ import org.springframework.transaction.PlatformTransactionManager;
* @author Stephane Nicoll
*/
@ConditionalOnClass(PlatformTransactionManager.class)
@ConditionalOnBean(DataSource.class)
@ConditionalOnMissingBean(BatchConfigurer.class)
@Configuration
class BatchConfigurerConfiguration {
@Configuration
@ConditionalOnBean(DataSource.class)
@ConditionalOnMissingBean(name = "entityManagerFactory")
static class JdbcBatchConfiguration {

View File

@@ -61,6 +61,7 @@ import org.springframework.transaction.PlatformTransactionManager;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.mockito.Mockito.mock;
/**
* Tests for {@link BatchAutoConfiguration}.
@@ -94,6 +95,12 @@ public class BatchAutoConfigurationTests {
.run((context) -> assertThat(context).doesNotHaveBean(BatchConfigurer.class));
}
@Test
public void whenThereIsAnEntityManagerFactoryButNoDataSourceAutoConfigurationBacksOff() {
this.contextRunner.withUserConfiguration(TestConfiguration.class, EntityManagerFactoryConfiguration.class)
.run((context) -> assertThat(context).doesNotHaveBean(BatchConfigurer.class));
}
@Test
public void testCustomConfigurationWithNoDatabase() {
this.contextRunner.withUserConfiguration(TestCustomConfiguration.class).run((context) -> {
@@ -250,6 +257,16 @@ public class BatchAutoConfigurationTests {
}
@Configuration
static class EntityManagerFactoryConfiguration {
@Bean
EntityManagerFactory entityManagerFactory() {
return mock(EntityManagerFactory.class);
}
}
@EnableBatchProcessing
@TestAutoConfigurationPackage(City.class)
protected static class TestCustomConfiguration implements BatchConfigurer {