类org.springframework.context.annotation.componentscan.simple.SimpleComponent源码实例Demo

下面列出了怎么用org.springframework.context.annotation.componentscan.simple.SimpleComponent的API类实例代码及写法,或者点击链接到github查看源代码。

@Test
public void viaContextRegistration_WithComposedAnnotation() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.register(ComposedAnnotationConfig.class);
	ctx.refresh();
	ctx.getBean(ComposedAnnotationConfig.class);
	ctx.getBean(SimpleComponent.class);
	ctx.getBean(ClassWithNestedComponents.NestedComponent.class);
	ctx.getBean(ClassWithNestedComponents.OtherNestedComponent.class);
	assertThat("config class bean not found",
			ctx.containsBeanDefinition("componentScanAnnotationIntegrationTests.ComposedAnnotationConfig"), is(true));
	assertThat("@ComponentScan annotated @Configuration class registered directly against " +
					"AnnotationConfigApplicationContext did not trigger component scanning as expected",
			ctx.containsBean("simpleComponent"), is(true));
}
 
private void assertSupportForComposedAnnotation(RootBeanDefinition beanDefinition) {
	beanFactory.registerBeanDefinition("config", beanDefinition);
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.setEnvironment(new StandardEnvironment());
	pp.postProcessBeanFactory(beanFactory);
	SimpleComponent simpleComponent = beanFactory.getBean(SimpleComponent.class);
	assertNotNull(simpleComponent);
}
 
private void assertSupportForComposedAnnotationWithExclude(RootBeanDefinition beanDefinition) {
	beanFactory.registerBeanDefinition("config", beanDefinition);
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.setEnvironment(new StandardEnvironment());
	pp.postProcessBeanFactory(beanFactory);
	try {
		beanFactory.getBean(SimpleComponent.class);
		fail("Should have thrown NoSuchBeanDefinitionException");
	}
	catch (NoSuchBeanDefinitionException ex) {
		// expected
	}
}
 
@Test
public void componentScanOverlapsWithImport() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.register(Config1.class);
	ctx.register(Config2.class);
	ctx.refresh(); // no conflicts found trying to register SimpleComponent
	ctx.getBean(SimpleComponent.class); // succeeds -> there is only one bean of type SimpleComponent
}
 
@Test
public void componentScanOverlapsWithImportUsingAsm() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.registerBeanDefinition("config1", new RootBeanDefinition(Config1.class.getName()));
	ctx.registerBeanDefinition("config2", new RootBeanDefinition(Config2.class.getName()));
	ctx.refresh(); // no conflicts found trying to register SimpleComponent
	ctx.getBean(SimpleComponent.class); // succeeds -> there is only one bean of type SimpleComponent
}
 
@Test
public void componentScanViaImport() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.register(Config3.class);
	ctx.refresh();
	ctx.getBean(SimpleComponent.class);
}
 
@Test
public void componentScanViaImportUsingAsm() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.registerBeanDefinition("config", new RootBeanDefinition(Config3.class.getName()));
	ctx.refresh();
	ctx.getBean(SimpleComponent.class);
}
 
@Test
public void componentScanViaImportUsingScan() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.scan("org.springframework.context.annotation.componentscan.importing");
	ctx.refresh();
	ctx.getBean(SimpleComponent.class);
}
 
@Test
public void circularImportViaComponentScan() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.registerBeanDefinition("config", new RootBeanDefinition(ImportingConfig.class.getName()));
	ctx.refresh();
	ctx.getBean(SimpleComponent.class);
}
 
@Test
public void viaContextRegistration_WithComposedAnnotation() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.register(ComposedAnnotationConfig.class);
	ctx.refresh();
	ctx.getBean(ComposedAnnotationConfig.class);
	ctx.getBean(SimpleComponent.class);
	ctx.getBean(ClassWithNestedComponents.NestedComponent.class);
	ctx.getBean(ClassWithNestedComponents.OtherNestedComponent.class);
	assertThat("config class bean not found",
			ctx.containsBeanDefinition("componentScanAnnotationIntegrationTests.ComposedAnnotationConfig"), is(true));
	assertThat("@ComponentScan annotated @Configuration class registered directly against " +
					"AnnotationConfigApplicationContext did not trigger component scanning as expected",
			ctx.containsBean("simpleComponent"), is(true));
}
 
private void assertSupportForComposedAnnotation(RootBeanDefinition beanDefinition) {
	beanFactory.registerBeanDefinition("config", beanDefinition);
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.setEnvironment(new StandardEnvironment());
	pp.postProcessBeanFactory(beanFactory);
	SimpleComponent simpleComponent = beanFactory.getBean(SimpleComponent.class);
	assertNotNull(simpleComponent);
}
 
private void assertSupportForComposedAnnotationWithExclude(RootBeanDefinition beanDefinition) {
	beanFactory.registerBeanDefinition("config", beanDefinition);
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.setEnvironment(new StandardEnvironment());
	pp.postProcessBeanFactory(beanFactory);
	try {
		beanFactory.getBean(SimpleComponent.class);
		fail("Should have thrown NoSuchBeanDefinitionException");
	}
	catch (NoSuchBeanDefinitionException ex) {
		// expected
	}
}
 
@Test
public void componentScanOverlapsWithImport() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.register(Config1.class);
	ctx.register(Config2.class);
	ctx.refresh(); // no conflicts found trying to register SimpleComponent
	ctx.getBean(SimpleComponent.class); // succeeds -> there is only one bean of type SimpleComponent
}
 
@Test
public void componentScanOverlapsWithImportUsingAsm() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.registerBeanDefinition("config1", new RootBeanDefinition(Config1.class.getName()));
	ctx.registerBeanDefinition("config2", new RootBeanDefinition(Config2.class.getName()));
	ctx.refresh(); // no conflicts found trying to register SimpleComponent
	ctx.getBean(SimpleComponent.class); // succeeds -> there is only one bean of type SimpleComponent
}
 
@Test
public void componentScanViaImport() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.register(Config3.class);
	ctx.refresh();
	ctx.getBean(SimpleComponent.class);
}
 
@Test
public void componentScanViaImportUsingAsm() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.registerBeanDefinition("config", new RootBeanDefinition(Config3.class.getName()));
	ctx.refresh();
	ctx.getBean(SimpleComponent.class);
}
 
@Test
public void componentScanViaImportUsingScan() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.scan("org.springframework.context.annotation.componentscan.importing");
	ctx.refresh();
	ctx.getBean(SimpleComponent.class);
}
 
@Test
public void circularImportViaComponentScan() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.registerBeanDefinition("config", new RootBeanDefinition(ImportingConfig.class.getName()));
	ctx.refresh();
	ctx.getBean(SimpleComponent.class);
}
 
@Test
public void viaContextRegistration_WithComposedAnnotation() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.register(ComposedAnnotationConfig.class);
	ctx.refresh();
	ctx.getBean(ComposedAnnotationConfig.class);
	ctx.getBean(SimpleComponent.class);
	ctx.getBean(ClassWithNestedComponents.NestedComponent.class);
	ctx.getBean(ClassWithNestedComponents.OtherNestedComponent.class);
	assertThat("config class bean not found",
			ctx.containsBeanDefinition("componentScanAnnotationIntegrationTests.ComposedAnnotationConfig"), is(true));
	assertThat("@ComponentScan annotated @Configuration class registered directly against " +
					"AnnotationConfigApplicationContext did not trigger component scanning as expected",
			ctx.containsBean("simpleComponent"), is(true));
}
 
private void assertSupportForComposedAnnotation(RootBeanDefinition beanDefinition) {
	beanFactory.registerBeanDefinition("config", beanDefinition);
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.setEnvironment(new StandardEnvironment());
	pp.postProcessBeanFactory(beanFactory);
	SimpleComponent simpleComponent = beanFactory.getBean(SimpleComponent.class);
	assertNotNull(simpleComponent);
}
 
private void assertSupportForComposedAnnotationWithExclude(RootBeanDefinition beanDefinition) {
	beanFactory.registerBeanDefinition("config", beanDefinition);
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.setEnvironment(new StandardEnvironment());
	pp.postProcessBeanFactory(beanFactory);
	try {
		beanFactory.getBean(SimpleComponent.class);
		fail("Should have thrown NoSuchBeanDefinitionException");
	}
	catch (NoSuchBeanDefinitionException ex) {
		// expected
	}
}
 
@Test
public void componentScanOverlapsWithImport() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.register(Config1.class);
	ctx.register(Config2.class);
	ctx.refresh(); // no conflicts found trying to register SimpleComponent
	ctx.getBean(SimpleComponent.class); // succeeds -> there is only one bean of type SimpleComponent
}
 
@Test
public void componentScanOverlapsWithImportUsingAsm() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.registerBeanDefinition("config1", new RootBeanDefinition(Config1.class.getName()));
	ctx.registerBeanDefinition("config2", new RootBeanDefinition(Config2.class.getName()));
	ctx.refresh(); // no conflicts found trying to register SimpleComponent
	ctx.getBean(SimpleComponent.class); // succeeds -> there is only one bean of type SimpleComponent
}
 
@Test
public void componentScanViaImport() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.register(Config3.class);
	ctx.refresh();
	ctx.getBean(SimpleComponent.class);
}
 
@Test
public void componentScanViaImportUsingAsm() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.registerBeanDefinition("config4", new RootBeanDefinition(Config3.class.getName()));
	ctx.refresh();
	ctx.getBean(SimpleComponent.class);
}
 
@Test
public void componentScanViaImportUsingScan() {
	AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	ctx.scan("org.springframework.context.annotation.componentscan.importing");
	ctx.refresh();
	ctx.getBean(SimpleComponent.class);
}
 
 同包方法