Commit 92d94797 authored by Stephane Nicoll's avatar Stephane Nicoll

Gracefully handle exclusion of DataSourceAutoConfiguration

This commit makes sure that an auto-configuration that requires
`DataSourceProperties` will not break if `DataSourceAutoConfiguration`
has been explicitly excluded.

Closes gh-12512
parent 2f5ab503
...@@ -94,7 +94,7 @@ public class FlywayAutoConfiguration { ...@@ -94,7 +94,7 @@ public class FlywayAutoConfiguration {
@Configuration @Configuration
@ConditionalOnMissingBean(Flyway.class) @ConditionalOnMissingBean(Flyway.class)
@EnableConfigurationProperties(FlywayProperties.class) @EnableConfigurationProperties({ DataSourceProperties.class, FlywayProperties.class })
public static class FlywayConfiguration { public static class FlywayConfiguration {
private final FlywayProperties properties; private final FlywayProperties properties;
......
...@@ -80,7 +80,7 @@ public class LiquibaseAutoConfiguration { ...@@ -80,7 +80,7 @@ public class LiquibaseAutoConfiguration {
@Configuration @Configuration
@ConditionalOnMissingBean(SpringLiquibase.class) @ConditionalOnMissingBean(SpringLiquibase.class)
@EnableConfigurationProperties(LiquibaseProperties.class) @EnableConfigurationProperties({ DataSourceProperties.class, LiquibaseProperties.class })
@Import(LiquibaseJpaDependencyConfiguration.class) @Import(LiquibaseJpaDependencyConfiguration.class)
public static class LiquibaseConfiguration { public static class LiquibaseConfiguration {
......
...@@ -105,6 +105,16 @@ public class FlywayAutoConfigurationTests { ...@@ -105,6 +105,16 @@ public class FlywayAutoConfigurationTests {
}); });
} }
@Test
public void flywayDataSourceWithoutDataSourceAutoConfiguration() {
this.contextRunner.withUserConfiguration(FlywayDataSourceConfiguration.class)
.run((context) -> {
assertThat(context).hasSingleBean(Flyway.class);
assertThat(context.getBean(Flyway.class).getDataSource())
.isEqualTo(context.getBean("flywayDataSource"));
});
}
@Test @Test
public void schemaManagementProviderDetectsDataSource() { public void schemaManagementProviderDetectsDataSource() {
this.contextRunner.withUserConfiguration(FlywayDataSourceConfiguration.class, this.contextRunner.withUserConfiguration(FlywayDataSourceConfiguration.class,
......
...@@ -248,6 +248,17 @@ public class LiquibaseAutoConfigurationTests { ...@@ -248,6 +248,17 @@ public class LiquibaseAutoConfigurationTests {
}); });
} }
@Test
public void liquibaseDataSourceWithoutDataSourceAutoConfiguration() {
this.contextRunner
.withUserConfiguration(LiquibaseDataSourceConfiguration.class)
.run((context) -> {
SpringLiquibase liquibase = context.getBean(SpringLiquibase.class);
assertThat(liquibase.getDataSource())
.isEqualTo(context.getBean("liquibaseDataSource"));
});
}
private ContextConsumer<AssertableApplicationContext> assertLiquibase( private ContextConsumer<AssertableApplicationContext> assertLiquibase(
Consumer<SpringLiquibase> consumer) { Consumer<SpringLiquibase> consumer) {
return (context) -> { return (context) -> {
......
...@@ -28,8 +28,6 @@ import org.junit.Test; ...@@ -28,8 +28,6 @@ import org.junit.Test;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.AnnotatedGenericBeanDefinition; import org.springframework.beans.factory.annotation.AnnotatedGenericBeanDefinition;
import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
...@@ -53,7 +51,6 @@ public abstract class AbstractDevToolsDataSourceAutoConfigurationTests { ...@@ -53,7 +51,6 @@ public abstract class AbstractDevToolsDataSourceAutoConfigurationTests {
@Test @Test
public void singleManuallyConfiguredDataSourceIsNotClosed() throws SQLException { public void singleManuallyConfiguredDataSourceIsNotClosed() throws SQLException {
ConfigurableApplicationContext context = createContext( ConfigurableApplicationContext context = createContext(
DataSourcePropertiesConfiguration.class,
SingleDataSourceConfiguration.class); SingleDataSourceConfiguration.class);
DataSource dataSource = context.getBean(DataSource.class); DataSource dataSource = context.getBean(DataSource.class);
Statement statement = configureDataSourceBehavior(dataSource); Statement statement = configureDataSourceBehavior(dataSource);
...@@ -63,7 +60,6 @@ public abstract class AbstractDevToolsDataSourceAutoConfigurationTests { ...@@ -63,7 +60,6 @@ public abstract class AbstractDevToolsDataSourceAutoConfigurationTests {
@Test @Test
public void multipleDataSourcesAreIgnored() throws SQLException { public void multipleDataSourcesAreIgnored() throws SQLException {
ConfigurableApplicationContext context = createContext( ConfigurableApplicationContext context = createContext(
DataSourcePropertiesConfiguration.class,
MultipleDataSourcesConfiguration.class); MultipleDataSourcesConfiguration.class);
Collection<DataSource> dataSources = context.getBeansOfType(DataSource.class) Collection<DataSource> dataSources = context.getBeansOfType(DataSource.class)
.values(); .values();
...@@ -80,7 +76,6 @@ public abstract class AbstractDevToolsDataSourceAutoConfigurationTests { ...@@ -80,7 +76,6 @@ public abstract class AbstractDevToolsDataSourceAutoConfigurationTests {
AnnotatedGenericBeanDefinition beanDefinition = new AnnotatedGenericBeanDefinition( AnnotatedGenericBeanDefinition beanDefinition = new AnnotatedGenericBeanDefinition(
dataSource.getClass()); dataSource.getClass());
context.registerBeanDefinition("dataSource", beanDefinition); context.registerBeanDefinition("dataSource", beanDefinition);
context.register(DataSourcePropertiesConfiguration.class);
context.register(DevToolsDataSourceAutoConfiguration.class); context.register(DevToolsDataSourceAutoConfiguration.class);
context.refresh(); context.refresh();
context.close(); context.close();
...@@ -146,12 +141,6 @@ public abstract class AbstractDevToolsDataSourceAutoConfigurationTests { ...@@ -146,12 +141,6 @@ public abstract class AbstractDevToolsDataSourceAutoConfigurationTests {
} }
@Configuration
@EnableConfigurationProperties(DataSourceProperties.class)
static class DataSourcePropertiesConfiguration {
}
@Configuration @Configuration
static class DataSourceSpyConfiguration { static class DataSourceSpyConfiguration {
......
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