From 74b169e88615fc4e3b99142554186da250a704cf Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Thu, 2 Jun 2011 17:33:12 +0000 Subject: [PATCH] [SPR-8393] AnnotatedBeanDefinitionReader's constructor now inherits the Environment of supplied BeanDefinitionRegistry. --- .../AnnotatedBeanDefinitionReader.java | 28 +++++++++++-------- .../context/annotation/Profile.java | 2 +- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/AnnotatedBeanDefinitionReader.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/AnnotatedBeanDefinitionReader.java index 720891d9a61..377dc272e8d 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/AnnotatedBeanDefinitionReader.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/AnnotatedBeanDefinitionReader.java @@ -24,9 +24,11 @@ import org.springframework.beans.factory.support.AutowireCandidateQualifier; import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanNameGenerator; -import org.springframework.core.env.StandardEnvironment; import org.springframework.core.env.Environment; +import org.springframework.core.env.EnvironmentCapable; +import org.springframework.core.env.StandardEnvironment; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.util.Assert; /** * Convenient adapter for programmatic registration of annotated bean classes. @@ -35,6 +37,7 @@ import org.springframework.core.type.AnnotationMetadata; * * @author Juergen Hoeller * @author Chris Beams + * @author Sam Brannen * @since 3.0 * @see AnnotationConfigApplicationContext#register */ @@ -48,18 +51,23 @@ public class AnnotatedBeanDefinitionReader { private ScopeMetadataResolver scopeMetadataResolver = new AnnotationScopeMetadataResolver(); - /** * Create a new {@code AnnotatedBeanDefinitionReader} for the given bean factory. * @param registry the {@code BeanFactory} to load bean definitions into, * in the form of a {@code BeanDefinitionRegistry} */ public AnnotatedBeanDefinitionReader(BeanDefinitionRegistry registry) { + Assert.notNull(registry, "BeanDefinitionRegistry must not be null"); this.registry = registry; + + // Inherit Environment if possible + if (this.registry instanceof EnvironmentCapable) { + this.environment = ((EnvironmentCapable) this.registry).getEnvironment(); + } + AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry); } - /** * Return the BeanDefinitionRegistry that this scanner operates on. */ @@ -82,8 +90,7 @@ public class AnnotatedBeanDefinitionReader { *

The default is a {@link AnnotationBeanNameGenerator}. */ public void setBeanNameGenerator(BeanNameGenerator beanNameGenerator) { - this.beanNameGenerator = (beanNameGenerator != null ? - beanNameGenerator : new AnnotationBeanNameGenerator()); + this.beanNameGenerator = (beanNameGenerator != null ? beanNameGenerator : new AnnotationBeanNameGenerator()); } /** @@ -91,11 +98,10 @@ public class AnnotatedBeanDefinitionReader { *

The default is an {@link AnnotationScopeMetadataResolver}. */ public void setScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver) { - this.scopeMetadataResolver = (scopeMetadataResolver != null ? - scopeMetadataResolver : new AnnotationScopeMetadataResolver()); + this.scopeMetadataResolver = (scopeMetadataResolver != null ? scopeMetadataResolver + : new AnnotationScopeMetadataResolver()); } - public void register(Class... annotatedClasses) { for (Class annotatedClass : annotatedClasses) { registerBean(annotatedClass); @@ -127,11 +133,9 @@ public class AnnotatedBeanDefinitionReader { for (Class qualifier : qualifiers) { if (Primary.class.equals(qualifier)) { abd.setPrimary(true); - } - else if (Lazy.class.equals(qualifier)) { + } else if (Lazy.class.equals(qualifier)) { abd.setLazyInit(true); - } - else { + } else { abd.addQualifier(new AutowireCandidateQualifier(qualifier)); } } diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/Profile.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/Profile.java index 929cd6b3f9e..d7670601323 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/Profile.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/Profile.java @@ -68,7 +68,7 @@ import org.springframework.core.env.ConfigurableEnvironment; public @interface Profile { /** - * The set profiles for which this component should be registered. + * The set of profiles for which this component should be registered. */ String[] value();