diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceTransactionManagerAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceTransactionManagerAutoConfiguration.java index e674dff8451..fd5be96b8c1 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceTransactionManagerAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceTransactionManagerAutoConfiguration.java @@ -49,7 +49,7 @@ import org.springframework.transaction.TransactionManager; */ @AutoConfiguration(before = TransactionAutoConfiguration.class, after = TransactionManagerCustomizationAutoConfiguration.class) -@ConditionalOnClass({ JdbcTemplate.class, TransactionManager.class }) +@ConditionalOnClass({ DataSource.class, JdbcTemplate.class, TransactionManager.class }) @AutoConfigureOrder(Ordered.LOWEST_PRECEDENCE) @EnableConfigurationProperties(DataSourceProperties.class) public class DataSourceTransactionManagerAutoConfiguration { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jdbc/DataSourceTransactionManagerAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jdbc/DataSourceTransactionManagerAutoConfigurationTests.java index a289503b024..c63c1a74580 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jdbc/DataSourceTransactionManagerAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jdbc/DataSourceTransactionManagerAutoConfigurationTests.java @@ -25,6 +25,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration; import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizationAutoConfiguration; +import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.jdbc.support.JdbcTransactionManager; @@ -40,6 +41,7 @@ import static org.mockito.Mockito.mock; * @author Stephane Nicoll * @author Kazuki Shimizu * @author Davin Byeon + * @author Moritz Halbritter */ class DataSourceTransactionManagerAutoConfigurationTests { @@ -124,4 +126,10 @@ class DataSourceTransactionManagerAutoConfigurationTests { }); } + @Test + void shouldNotUseDataSourcePropertiesIfDataSourceIsNotOnTheClasspath() { + this.contextRunner.withClassLoader(new FilteredClassLoader(DataSource.class)) + .run((context) -> assertThat(context).doesNotHaveBean(DataSourceProperties.class)); + } + }