@Import detects and accepts existing configuration class in any order of processing

This commit is contained in:
Juergen Hoeller
2009-05-13 20:49:45 +00:00
parent 1ded650a6c
commit 14732c5dc2
4 changed files with 49 additions and 23 deletions

View File

@@ -18,8 +18,10 @@ package org.springframework.context.annotation.configuration;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import org.junit.Test;
import test.beans.ITestBean;
import test.beans.TestBean;
import org.springframework.beans.factory.parsing.BeanDefinitionParsingException;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.RootBeanDefinition;
@@ -28,9 +30,6 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ConfigurationClassPostProcessor;
import org.springframework.context.annotation.Import;
import test.beans.ITestBean;
import test.beans.TestBean;
/**
* System tests for {@link Import} annotation support.
@@ -58,10 +57,30 @@ public class ImportTests {
public void testProcessImports() {
int configClasses = 2;
int beansInClasses = 2;
assertBeanDefinitionCount((configClasses + beansInClasses), ConfigurationWithImportAnnotation.class);
}
@Test
public void testProcessImportsWithDoubleImports() {
int configClasses = 3;
int beansInClasses = 3;
assertBeanDefinitionCount((configClasses + beansInClasses), ConfigurationWithImportAnnotation.class, OtherConfigurationWithImportAnnotation.class);
}
@Test
public void testProcessImportsWithExplicitOverridingBefore() {
int configClasses = 2;
int beansInClasses = 2;
assertBeanDefinitionCount((configClasses + beansInClasses), OtherConfiguration.class, ConfigurationWithImportAnnotation.class);
}
@Test
public void testProcessImportsWithExplicitOverridingAfter() {
int configClasses = 2;
int beansInClasses = 2;
assertBeanDefinitionCount((configClasses + beansInClasses), ConfigurationWithImportAnnotation.class, OtherConfiguration.class);
}
@Configuration
@Import(OtherConfiguration.class)
static class ConfigurationWithImportAnnotation {
@@ -72,13 +91,22 @@ public class ImportTests {
}
@Configuration
static class OtherConfiguration {
@Import(OtherConfiguration.class)
static class OtherConfigurationWithImportAnnotation {
@Bean
public ITestBean two() {
return new TestBean();
}
}
@Configuration
static class OtherConfiguration {
@Bean
public ITestBean three() {
return new TestBean();
}
}
// ------------------------------------------------------------------------
@Test