From fed13b0e0ceefc4198b761704292ce290ae68066 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 12 Jun 2024 10:59:45 +0200 Subject: [PATCH] Back off if DataSource is not on the classpath Closes gh-41082 --- .../DataSourceTransactionManagerAutoConfiguration.java | 2 +- ...ataSourceTransactionManagerAutoConfigurationTests.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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 e674dff8451b..fd5be96b8c17 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 @@ */ @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 a289503b0240..c63c1a74580c 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.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 @@ * @author Stephane Nicoll * @author Kazuki Shimizu * @author Davin Byeon + * @author Moritz Halbritter */ class DataSourceTransactionManagerAutoConfigurationTests { @@ -124,4 +126,10 @@ void transactionWithMultipleDataSourcesAndPrimaryCandidateIsConfigured() { }); } + @Test + void shouldNotUseDataSourcePropertiesIfDataSourceIsNotOnTheClasspath() { + this.contextRunner.withClassLoader(new FilteredClassLoader(DataSource.class)) + .run((context) -> assertThat(context).doesNotHaveBean(DataSourceProperties.class)); + } + }