diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.java index 0d1b4574a5..c66ae2bb94 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.java @@ -64,7 +64,6 @@ import org.springframework.util.StringUtils; */ @Configuration @ConditionalOnClass(EmbeddedDatabaseType.class /* Spring JDBC */) -@ConditionalOnMissingBean(DataSource.class) public class DataSourceAutoConfiguration implements EnvironmentAware { private static Log logger = LogFactory.getLog(DataSourceAutoConfiguration.class); @@ -138,16 +137,19 @@ public class DataSourceAutoConfiguration implements EnvironmentAware { } @Conditional(DataSourceAutoConfiguration.EmbeddedDatabaseCondition.class) + @ConditionalOnMissingBean(DataSource.class) @Import(EmbeddedDataSourceConfiguration.class) protected static class EmbeddedConfiguration { } @Conditional(DataSourceAutoConfiguration.TomcatDatabaseCondition.class) + @ConditionalOnMissingBean(DataSource.class) @Import(TomcatDataSourceConfiguration.class) protected static class TomcatConfiguration { } @Conditional(DataSourceAutoConfiguration.BasicDatabaseCondition.class) + @ConditionalOnMissingBean(DataSource.class) @Import(CommonsDataSourceConfiguration.class) protected static class DbcpConfiguration { } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfigurationTests.java index cc0426fad6..8ae25ec382 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfigurationTests.java @@ -75,6 +75,17 @@ public class DataSourceAutoConfigurationTests { assertNotNull(jdbcTemplate.getDataSource()); } + @Test + public void testJdbcTemplateExistsWithCustomDataSource() throws Exception { + this.context.register(TestDataSourceConfiguration.class, + DataSourceAutoConfiguration.class, + PropertyPlaceholderAutoConfiguration.class); + this.context.refresh(); + JdbcTemplate jdbcTemplate = this.context.getBean(JdbcTemplate.class); + assertNotNull(jdbcTemplate); + assertTrue(jdbcTemplate.getDataSource() instanceof BasicDataSource); + } + @Test public void testNamedParameterJdbcTemplateExists() throws Exception { this.context.register(DataSourceAutoConfiguration.class,