From 846e6731dedb9a266ad98914f874de43291b6f1e 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. 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 a50c408d3bb5..8067261f9c69 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 @@ protected List getCandidateConfigurations(AnnotationMetadata metadata, A 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); } }