Ensure JdbcTemplate and DB initializer still work when user supplies DataSource

This commit is contained in:
Dave Syer 2013-10-16 13:43:59 -04:00
parent f43cf1db61
commit 43f8a71af4
2 changed files with 14 additions and 1 deletions

View File

@ -64,7 +64,6 @@ import org.springframework.util.StringUtils;
*/ */
@Configuration @Configuration
@ConditionalOnClass(EmbeddedDatabaseType.class /* Spring JDBC */) @ConditionalOnClass(EmbeddedDatabaseType.class /* Spring JDBC */)
@ConditionalOnMissingBean(DataSource.class)
public class DataSourceAutoConfiguration implements EnvironmentAware { public class DataSourceAutoConfiguration implements EnvironmentAware {
private static Log logger = LogFactory.getLog(DataSourceAutoConfiguration.class); private static Log logger = LogFactory.getLog(DataSourceAutoConfiguration.class);
@ -138,16 +137,19 @@ public class DataSourceAutoConfiguration implements EnvironmentAware {
} }
@Conditional(DataSourceAutoConfiguration.EmbeddedDatabaseCondition.class) @Conditional(DataSourceAutoConfiguration.EmbeddedDatabaseCondition.class)
@ConditionalOnMissingBean(DataSource.class)
@Import(EmbeddedDataSourceConfiguration.class) @Import(EmbeddedDataSourceConfiguration.class)
protected static class EmbeddedConfiguration { protected static class EmbeddedConfiguration {
} }
@Conditional(DataSourceAutoConfiguration.TomcatDatabaseCondition.class) @Conditional(DataSourceAutoConfiguration.TomcatDatabaseCondition.class)
@ConditionalOnMissingBean(DataSource.class)
@Import(TomcatDataSourceConfiguration.class) @Import(TomcatDataSourceConfiguration.class)
protected static class TomcatConfiguration { protected static class TomcatConfiguration {
} }
@Conditional(DataSourceAutoConfiguration.BasicDatabaseCondition.class) @Conditional(DataSourceAutoConfiguration.BasicDatabaseCondition.class)
@ConditionalOnMissingBean(DataSource.class)
@Import(CommonsDataSourceConfiguration.class) @Import(CommonsDataSourceConfiguration.class)
protected static class DbcpConfiguration { protected static class DbcpConfiguration {
} }

View File

@ -75,6 +75,17 @@ public class DataSourceAutoConfigurationTests {
assertNotNull(jdbcTemplate.getDataSource()); 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 @Test
public void testNamedParameterJdbcTemplateExists() throws Exception { public void testNamedParameterJdbcTemplateExists() throws Exception {
this.context.register(DataSourceAutoConfiguration.class, this.context.register(DataSourceAutoConfiguration.class,