From 433d52b72849054ed64e1543b1111075da18f9db Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 13 May 2009 16:19:56 +0000 Subject: [PATCH] @Import detects and accepts existing configuration class of the desired type --- .../context/annotation/ConfigurationClass.java | 18 ++++++++++++++++++ ...ConfigurationClassBeanDefinitionReader.java | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java index 4c98bc8d749..e9065a526ae 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java @@ -129,6 +129,24 @@ final class ConfigurationClass { } + @Override + public boolean equals(Object other) { + if (this == other) { + return true; + } + if (!(other instanceof ConfigurationClass)) { + return false; + } + ConfigurationClass otherCc = (ConfigurationClass) other; + return getMetadata().getClassName().equals(otherCc.getMetadata().getClassName()); + } + + @Override + public int hashCode() { + return getMetadata().getClassName().hashCode(); + } + + /** Configuration classes must be non-final to accommodate CGLIB subclassing. */ private class FinalConfigurationProblem extends Problem { diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java index bc0730e8419..0637a1351e1 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java @@ -99,7 +99,7 @@ class ConfigurationClassBeanDefinitionReader { if (configClass.getBeanName() == null) { GenericBeanDefinition configBeanDef = new GenericBeanDefinition(); configBeanDef.setBeanClassName(configClass.getMetadata().getClassName()); - String configBeanName = BeanDefinitionReaderUtils.registerWithGeneratedName(configBeanDef, registry); + String configBeanName = BeanDefinitionReaderUtils.registerWithGeneratedName(configBeanDef, this.registry); configClass.setBeanName(configBeanName); if (logger.isDebugEnabled()) { logger.debug(String.format("Registered bean definition for imported @Configuration class %s", configBeanName)); @@ -109,7 +109,7 @@ class ConfigurationClassBeanDefinitionReader { /** * Reads a particular {@link ConfigurationClassMethod}, registering bean definitions with - * {@link #registry} based on its contents. + * the BeanDefinitionRegistry based on its contents. */ private void loadBeanDefinitionsForModelMethod(ConfigurationClassMethod method) { ConfigurationClass configClass = method.getDeclaringClass();