From 6b82d293d5ed2ec6f4e02432594a73e354d17928 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 6 Feb 2013 20:41:37 +0100 Subject: [PATCH] ConfigurationClassPostProcessor allows for overriding of scoped-proxy bean definitions Issue: SPR-10265 --- .../ConfigurationClassBeanDefinitionReader.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java index e41aca1728..e1676c6eb2 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -256,7 +256,8 @@ class ConfigurationClassBeanDefinitionReader { if (proxyMode != ScopedProxyMode.NO) { BeanDefinitionHolder proxyDef = ScopedProxyCreator.createScopedProxy( new BeanDefinitionHolder(beanDef, beanName), this.registry, proxyMode == ScopedProxyMode.TARGET_CLASS); - beanDefToRegister = proxyDef.getBeanDefinition(); + beanDefToRegister = + new ConfigurationClassBeanDefinition((RootBeanDefinition) proxyDef.getBeanDefinition(), configClass); } if (logger.isDebugEnabled()) { @@ -307,12 +308,17 @@ class ConfigurationClassBeanDefinitionReader { @SuppressWarnings("serial") private static class ConfigurationClassBeanDefinition extends RootBeanDefinition implements AnnotatedBeanDefinition { - private AnnotationMetadata annotationMetadata; + private final AnnotationMetadata annotationMetadata; public ConfigurationClassBeanDefinition(ConfigurationClass configClass) { this.annotationMetadata = configClass.getMetadata(); } + public ConfigurationClassBeanDefinition(RootBeanDefinition original, ConfigurationClass configClass) { + super(original); + this.annotationMetadata = configClass.getMetadata(); + } + private ConfigurationClassBeanDefinition(ConfigurationClassBeanDefinition original) { super(original); this.annotationMetadata = original.annotationMetadata;