From d4ef342ff6a1d8a21ea04b8d2bc0f7a28996bd59 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Sun, 31 Jan 2010 16:10:11 +0000 Subject: [PATCH] call processConfigBeanDefinitions lazily if postProcessBeanDefinitionRegistry hasn't been called git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2886 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../annotation/ConfigurationClassPostProcessor.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java index 39c017f8b9a..8281e51617f 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java @@ -80,6 +80,8 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo private boolean setMetadataReaderFactoryCalled = false; + private boolean postProcessBeanDefinitionRegistryCalled = false; + /** * Set the {@link SourceExtractor} to use for generated bean definitions @@ -126,6 +128,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo * Derive further bean definitions from the configuration classes in the registry. */ public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) { + this.postProcessBeanDefinitionRegistryCalled = true; processConfigBeanDefinitions(registry); } @@ -134,9 +137,15 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo * by replacing them with CGLIB-enhanced subclasses. */ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) { + if (!this.postProcessBeanDefinitionRegistryCalled) { + // BeanDefinitionRegistryPostProcessor hook apparently not supported... + // Simply call processConfigBeanDefinitions lazily at this point then. + processConfigBeanDefinitions((BeanDefinitionRegistry) beanFactory); + } enhanceConfigurationClasses(beanFactory); } + /** * Build and validate a configuration model based on the registry of * {@link Configuration} classes.