From 437ffa6067266eafca6fa7c5200b7375618e1970 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 11 Apr 2016 17:43:23 +0200 Subject: [PATCH] Detect LoadTimeWeaver bean when declared through @Bean method as well Issue: SPR-10856 --- .../context/support/AbstractApplicationContext.java | 7 +++++++ 1 file changed, 7 insertions(+) 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 271bbcfaba2..2e462c01cca 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 @@ -679,6 +679,13 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader */ protected void invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory) { PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(beanFactory, getBeanFactoryPostProcessors()); + + // Detect a LoadTimeWeaver and prepare for weaving, if found in the meantime + // (e.g. through an @Bean method registered by ConfigurationClassPostProcessor) + if (beanFactory.getTempClassLoader() == null && beanFactory.containsBean(LOAD_TIME_WEAVER_BEAN_NAME)) { + beanFactory.addBeanPostProcessor(new LoadTimeWeaverAwareProcessor(beanFactory)); + beanFactory.setTempClassLoader(new ContextTypeMatchClassLoader(beanFactory.getBeanClassLoader())); + } } /**