From a580d6d6fc8f565dec0399c021341beab4311414 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 21 Jun 2024 11:22:48 +0200 Subject: [PATCH] Leniently ignore type mismatch for LoadTimeWeaverAware beans Closes gh-33082 --- .../context/support/AbstractApplicationContext.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java b/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java index 53b48c2b702..775eab6898e 100644 --- a/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java +++ b/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java @@ -36,6 +36,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.beans.BeansException; import org.springframework.beans.CachedIntrospectionResults; import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanNotOfRequiredTypeException; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.config.AutowireCapableBeanFactory; @@ -949,7 +950,15 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader // Initialize LoadTimeWeaverAware beans early to allow for registering their transformers early. String[] weaverAwareNames = beanFactory.getBeanNamesForType(LoadTimeWeaverAware.class, false, false); for (String weaverAwareName : weaverAwareNames) { - beanFactory.getBean(weaverAwareName, LoadTimeWeaverAware.class); + try { + beanFactory.getBean(weaverAwareName, LoadTimeWeaverAware.class); + } + catch (BeanNotOfRequiredTypeException ex) { + if (logger.isDebugEnabled()) { + logger.debug("Failed to initialize LoadTimeWeaverAware bean '" + weaverAwareName + + "' due to unexpected type mismatch: " + ex.getMessage()); + } + } } // Stop using the temporary ClassLoader for type matching.