From e01826035d814fa7fd0aa61378f4caa02bad5dc1 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 18 Jun 2025 19:40:56 +0100 Subject: [PATCH] Order BatchAutoConfiguration after DataSourceAutoConfiguration Prior to the restructuring, this ordering was in place, but not directly. BatchAutoConfiguration was ordered after HibernateJpaAutoConfiguration which, in turn, was ordered after DataSourceAutoConfiguration. This works as all of the auto-configuration was in the same module. Following the restructuring, HibernateJpaAutoConfiguration may not be on the classpath. When it's absent, it's ordering is also lost which means that BatchAutoConfiguration won't be ordered after DataSourceAutoConfiguation with spring-boot-hibernate isn't present. This commit adds explicit after ordering to BatchAutoConfiguration. This ensures consistent ordering, with or without the JPA auto-config. See gh-46071 --- .../boot/batch/autoconfigure/BatchAutoConfiguration.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-batch/src/main/java/org/springframework/boot/batch/autoconfigure/BatchAutoConfiguration.java b/spring-boot-project/spring-boot-batch/src/main/java/org/springframework/boot/batch/autoconfigure/BatchAutoConfiguration.java index 88ccf0f7062..e6cfcce9840 100644 --- a/spring-boot-project/spring-boot-batch/src/main/java/org/springframework/boot/batch/autoconfigure/BatchAutoConfiguration.java +++ b/spring-boot-project/spring-boot-batch/src/main/java/org/springframework/boot/batch/autoconfigure/BatchAutoConfiguration.java @@ -36,6 +36,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProp import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; import org.springframework.boot.sql.autoconfigure.init.OnDatabaseInitializationCondition; import org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer; import org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration; @@ -69,7 +70,7 @@ import org.springframework.util.StringUtils; * @author Yanming Zhou * @since 4.0.0 */ -@AutoConfiguration(after = TransactionAutoConfiguration.class, +@AutoConfiguration(after = { DataSourceAutoConfiguration.class, TransactionAutoConfiguration.class }, afterName = "org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration") @ConditionalOnClass({ JobLauncher.class, DataSource.class, DatabasePopulator.class }) @ConditionalOnBean({ DataSource.class, PlatformTransactionManager.class })