Commit acd9b61c authored by Andy Wilkinson's avatar Andy Wilkinson

Make Batch JPA auto-configuration back off without a DataSource

Fixes gh-17465
parent c5241f0e
...@@ -35,12 +35,12 @@ import org.springframework.transaction.PlatformTransactionManager; ...@@ -35,12 +35,12 @@ import org.springframework.transaction.PlatformTransactionManager;
* @author Stephane Nicoll * @author Stephane Nicoll
*/ */
@ConditionalOnClass(PlatformTransactionManager.class) @ConditionalOnClass(PlatformTransactionManager.class)
@ConditionalOnBean(DataSource.class)
@ConditionalOnMissingBean(BatchConfigurer.class) @ConditionalOnMissingBean(BatchConfigurer.class)
@Configuration @Configuration
class BatchConfigurerConfiguration { class BatchConfigurerConfiguration {
@Configuration @Configuration
@ConditionalOnBean(DataSource.class)
@ConditionalOnMissingBean(name = "entityManagerFactory") @ConditionalOnMissingBean(name = "entityManagerFactory")
static class JdbcBatchConfiguration { static class JdbcBatchConfiguration {
......
...@@ -61,6 +61,7 @@ import org.springframework.transaction.PlatformTransactionManager; ...@@ -61,6 +61,7 @@ import org.springframework.transaction.PlatformTransactionManager;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.mockito.Mockito.mock;
/** /**
* Tests for {@link BatchAutoConfiguration}. * Tests for {@link BatchAutoConfiguration}.
...@@ -94,6 +95,12 @@ public class BatchAutoConfigurationTests { ...@@ -94,6 +95,12 @@ public class BatchAutoConfigurationTests {
.run((context) -> assertThat(context).doesNotHaveBean(BatchConfigurer.class)); .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 @Test
public void testCustomConfigurationWithNoDatabase() { public void testCustomConfigurationWithNoDatabase() {
this.contextRunner.withUserConfiguration(TestCustomConfiguration.class).run((context) -> { this.contextRunner.withUserConfiguration(TestCustomConfiguration.class).run((context) -> {
...@@ -250,6 +257,16 @@ public class BatchAutoConfigurationTests { ...@@ -250,6 +257,16 @@ public class BatchAutoConfigurationTests {
} }
@Configuration
static class EntityManagerFactoryConfiguration {
@Bean
EntityManagerFactory entityManagerFactory() {
return mock(EntityManagerFactory.class);
}
}
@EnableBatchProcessing @EnableBatchProcessing
@TestAutoConfigurationPackage(City.class) @TestAutoConfigurationPackage(City.class)
protected static class TestCustomConfiguration implements BatchConfigurer { protected static class TestCustomConfiguration implements BatchConfigurer {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment