From acd9b61c8e15fa587e7b6a9d29554d315b591af5 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Tue, 9 Jul 2019 15:46:45 +0100 Subject: [PATCH] Make Batch JPA auto-configuration back off without a DataSource Fixes gh-17465 --- .../batch/BatchConfigurerConfiguration.java | 2 +- .../batch/BatchAutoConfigurationTests.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/batch/BatchConfigurerConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/batch/BatchConfigurerConfiguration.java index afa868a4eba..dc8c5c0a9cf 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/batch/BatchConfigurerConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/batch/BatchConfigurerConfiguration.java @@ -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 { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/batch/BatchAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/batch/BatchAutoConfigurationTests.java index f8ab193bd28..8c70874a0d6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/batch/BatchAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/batch/BatchAutoConfigurationTests.java @@ -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 {