From 8bcab02efd20d38f1a0a7b2f8e886268f0d69873 Mon Sep 17 00:00:00 2001 From: linw-bai <107357009+linw-bai@users.noreply.github.com> Date: Fri, 14 Nov 2025 09:22:24 +0800 Subject: [PATCH] Use beanClassLoader when checking excluded auto-configuration classes When validating exclusions, prefer the selector's beanClassLoader for ClassUtils.isPresent checks and fall back to the selector class loader if the beanClassLoader is not set. This makes presence checks consistent with the classloader context used for loading auto-configuration candidates. See gh-48129 Signed-off-by: linw-bai <107357009+linw-bai@users.noreply.github.com> --- .../boot/autoconfigure/AutoConfigurationImportSelector.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/AutoConfigurationImportSelector.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/AutoConfigurationImportSelector.java index a50c408d3bb..8067261f9c6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/AutoConfigurationImportSelector.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/AutoConfigurationImportSelector.java @@ -205,8 +205,9 @@ public class AutoConfigurationImportSelector implements DeferredImportSelector, private void checkExcludedClasses(List configurations, Set exclusions) { List invalidExcludes = new ArrayList<>(exclusions.size()); + ClassLoader classLoader = (this.beanClassLoader != null) ? this.beanClassLoader : getClass().getClassLoader(); for (String exclusion : exclusions) { - if (ClassUtils.isPresent(exclusion, getClass().getClassLoader()) && !configurations.contains(exclusion)) { + if (ClassUtils.isPresent(exclusion, classLoader) && !configurations.contains(exclusion)) { invalidExcludes.add(exclusion); } }