org.springframework.context.annotation2.NamedStubDao2#example.scannable.NamedStubDao源码实例Demo

下面列出了org.springframework.context.annotation2.NamedStubDao2#example.scannable.NamedStubDao 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Test
public void testSimpleScanWithDefaultFiltersAndOverriddenEqualNamedBean() {
	GenericApplicationContext context = new GenericApplicationContext();
	context.registerBeanDefinition("myNamedDao", new RootBeanDefinition(NamedStubDao.class));
	int initialBeanCount = context.getBeanDefinitionCount();
	ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context);
	scanner.setIncludeAnnotationConfig(false);
	int scannedBeanCount = scanner.scan(BASE_PACKAGE);

	assertEquals(6, scannedBeanCount);
	assertEquals(initialBeanCount + scannedBeanCount, context.getBeanDefinitionCount());
	assertTrue(context.containsBean("serviceInvocationCounter"));
	assertTrue(context.containsBean("fooServiceImpl"));
	assertTrue(context.containsBean("stubFooDao"));
	assertTrue(context.containsBean("myNamedComponent"));
	assertTrue(context.containsBean("myNamedDao"));
}
 
@Test
public void testSimpleScanWithDefaultFiltersAndOverriddenCompatibleNamedBean() {
	GenericApplicationContext context = new GenericApplicationContext();
	RootBeanDefinition bd = new RootBeanDefinition(NamedStubDao.class);
	bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE);
	context.registerBeanDefinition("myNamedDao", bd);
	int initialBeanCount = context.getBeanDefinitionCount();
	ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context);
	scanner.setIncludeAnnotationConfig(false);
	int scannedBeanCount = scanner.scan(BASE_PACKAGE);

	assertEquals(6, scannedBeanCount);
	assertEquals(initialBeanCount + scannedBeanCount, context.getBeanDefinitionCount());
	assertTrue(context.containsBean("serviceInvocationCounter"));
	assertTrue(context.containsBean("fooServiceImpl"));
	assertTrue(context.containsBean("stubFooDao"));
	assertTrue(context.containsBean("myNamedComponent"));
	assertTrue(context.containsBean("myNamedDao"));
}
 
@Test
public void testSimpleScanWithDefaultFiltersAndSpecifiedBeanNameClash() {
	GenericApplicationContext context = new GenericApplicationContext();
	ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context);
	scanner.setIncludeAnnotationConfig(false);
	try {
		scanner.scan("org.springframework.context.annotation2");
		scanner.scan(BASE_PACKAGE);
		fail("Must have thrown IllegalStateException");
	}
	catch (IllegalStateException expected) {
		assertTrue(expected.getMessage().contains("myNamedDao"));
		assertTrue(expected.getMessage().contains(NamedStubDao.class.getName()));
		assertTrue(expected.getMessage().contains(NamedStubDao2.class.getName()));
	}
}
 
@Test
public void testWithComponentAnnotationOnly() {
	ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
	provider.addIncludeFilter(new AnnotationTypeFilter(Component.class));
	provider.addExcludeFilter(new AnnotationTypeFilter(Repository.class));
	provider.addExcludeFilter(new AnnotationTypeFilter(Service.class));
	provider.addExcludeFilter(new AnnotationTypeFilter(Controller.class));
	Set<BeanDefinition> candidates = provider.findCandidateComponents(TEST_BASE_PACKAGE);
	assertEquals(3, candidates.size());
	assertTrue(containsBeanClass(candidates, NamedComponent.class));
	assertTrue(containsBeanClass(candidates, ServiceInvocationCounter.class));
	assertTrue(containsBeanClass(candidates, BarComponent.class));
	assertFalse(containsBeanClass(candidates, FooServiceImpl.class));
	assertFalse(containsBeanClass(candidates, StubFooDao.class));
	assertFalse(containsBeanClass(candidates, NamedStubDao.class));
}
 
@Test
public void testSimpleScanWithDefaultFiltersAndOverriddenEqualNamedBean() {
	GenericApplicationContext context = new GenericApplicationContext();
	context.registerBeanDefinition("myNamedDao", new RootBeanDefinition(NamedStubDao.class));
	int initialBeanCount = context.getBeanDefinitionCount();
	ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context);
	scanner.setIncludeAnnotationConfig(false);
	int scannedBeanCount = scanner.scan(BASE_PACKAGE);

	assertEquals(6, scannedBeanCount);
	assertEquals(initialBeanCount + scannedBeanCount, context.getBeanDefinitionCount());
	assertTrue(context.containsBean("serviceInvocationCounter"));
	assertTrue(context.containsBean("fooServiceImpl"));
	assertTrue(context.containsBean("stubFooDao"));
	assertTrue(context.containsBean("myNamedComponent"));
	assertTrue(context.containsBean("myNamedDao"));
}
 
@Test
public void testSimpleScanWithDefaultFiltersAndOverriddenCompatibleNamedBean() {
	GenericApplicationContext context = new GenericApplicationContext();
	RootBeanDefinition bd = new RootBeanDefinition(NamedStubDao.class);
	bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE);
	context.registerBeanDefinition("myNamedDao", bd);
	int initialBeanCount = context.getBeanDefinitionCount();
	ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context);
	scanner.setIncludeAnnotationConfig(false);
	int scannedBeanCount = scanner.scan(BASE_PACKAGE);

	assertEquals(6, scannedBeanCount);
	assertEquals(initialBeanCount + scannedBeanCount, context.getBeanDefinitionCount());
	assertTrue(context.containsBean("serviceInvocationCounter"));
	assertTrue(context.containsBean("fooServiceImpl"));
	assertTrue(context.containsBean("stubFooDao"));
	assertTrue(context.containsBean("myNamedComponent"));
	assertTrue(context.containsBean("myNamedDao"));
}
 
@Test
public void testSimpleScanWithDefaultFiltersAndSpecifiedBeanNameClash() {
	GenericApplicationContext context = new GenericApplicationContext();
	ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context);
	scanner.setIncludeAnnotationConfig(false);
	try {
		scanner.scan("org.springframework.context.annotation2");
		scanner.scan(BASE_PACKAGE);
		fail("Must have thrown IllegalStateException");
	}
	catch (IllegalStateException expected) {
		assertTrue(expected.getMessage().contains("myNamedDao"));
		assertTrue(expected.getMessage().contains(NamedStubDao.class.getName()));
		assertTrue(expected.getMessage().contains(NamedStubDao2.class.getName()));
	}
}
 
@Test
public void testWithComponentAnnotationOnly() {
	ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
	provider.addIncludeFilter(new AnnotationTypeFilter(Component.class));
	provider.addExcludeFilter(new AnnotationTypeFilter(Repository.class));
	provider.addExcludeFilter(new AnnotationTypeFilter(Service.class));
	provider.addExcludeFilter(new AnnotationTypeFilter(Controller.class));
	Set<BeanDefinition> candidates = provider.findCandidateComponents(TEST_BASE_PACKAGE);
	assertEquals(3, candidates.size());
	assertTrue(containsBeanClass(candidates, NamedComponent.class));
	assertTrue(containsBeanClass(candidates, ServiceInvocationCounter.class));
	assertTrue(containsBeanClass(candidates, BarComponent.class));
	assertFalse(containsBeanClass(candidates, FooServiceImpl.class));
	assertFalse(containsBeanClass(candidates, StubFooDao.class));
	assertFalse(containsBeanClass(candidates, NamedStubDao.class));
}
 
@Test
public void testSimpleScanWithDefaultFiltersAndOverriddenEqualNamedBean() {
	GenericApplicationContext context = new GenericApplicationContext();
	context.registerBeanDefinition("myNamedDao", new RootBeanDefinition(NamedStubDao.class));
	int initialBeanCount = context.getBeanDefinitionCount();
	ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context);
	scanner.setIncludeAnnotationConfig(false);
	int scannedBeanCount = scanner.scan(BASE_PACKAGE);
	assertEquals(5, scannedBeanCount);
	assertEquals(initialBeanCount + scannedBeanCount, context.getBeanDefinitionCount());
	assertTrue(context.containsBean("serviceInvocationCounter"));
	assertTrue(context.containsBean("fooServiceImpl"));
	assertTrue(context.containsBean("stubFooDao"));
	assertTrue(context.containsBean("myNamedComponent"));
	assertTrue(context.containsBean("myNamedDao"));
}
 
@Test
public void testSimpleScanWithDefaultFiltersAndOverriddenCompatibleNamedBean() {
	GenericApplicationContext context = new GenericApplicationContext();
	RootBeanDefinition bd = new RootBeanDefinition(NamedStubDao.class);
	bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE);
	context.registerBeanDefinition("myNamedDao", bd);
	int initialBeanCount = context.getBeanDefinitionCount();
	ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context);
	scanner.setIncludeAnnotationConfig(false);
	int scannedBeanCount = scanner.scan(BASE_PACKAGE);
	assertEquals(5, scannedBeanCount);
	assertEquals(initialBeanCount + scannedBeanCount, context.getBeanDefinitionCount());
	assertTrue(context.containsBean("serviceInvocationCounter"));
	assertTrue(context.containsBean("fooServiceImpl"));
	assertTrue(context.containsBean("stubFooDao"));
	assertTrue(context.containsBean("myNamedComponent"));
	assertTrue(context.containsBean("myNamedDao"));
}
 
@Test
public void testSimpleScanWithDefaultFiltersAndSpecifiedBeanNameClash() {
	GenericApplicationContext context = new GenericApplicationContext();
	ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context);
	scanner.setIncludeAnnotationConfig(false);
	try {
		scanner.scan("org.springframework.context.annotation2");
		scanner.scan(BASE_PACKAGE);
		fail("Must have thrown IllegalStateException");
	}
	catch (IllegalStateException expected) {
		assertTrue(expected.getMessage().contains("myNamedDao"));
		assertTrue(expected.getMessage().contains(NamedStubDao.class.getName()));
		assertTrue(expected.getMessage().contains(NamedStubDao2.class.getName()));
	}
}
 
private void testDefault(ClassPathScanningCandidateComponentProvider provider,
		Class<? extends BeanDefinition> expectedBeanDefinitionType) {
	Set<BeanDefinition> candidates = provider.findCandidateComponents(TEST_BASE_PACKAGE);
	assertTrue(containsBeanClass(candidates, DefaultNamedComponent.class));
	assertTrue(containsBeanClass(candidates, NamedComponent.class));
	assertTrue(containsBeanClass(candidates, FooServiceImpl.class));
	assertTrue(containsBeanClass(candidates, StubFooDao.class));
	assertTrue(containsBeanClass(candidates, NamedStubDao.class));
	assertTrue(containsBeanClass(candidates, ServiceInvocationCounter.class));
	assertTrue(containsBeanClass(candidates, BarComponent.class));
	assertEquals(7, candidates.size());
	assertBeanDefinitionType(candidates, expectedBeanDefinitionType);
}
 
private void testDefault(ClassPathScanningCandidateComponentProvider provider,
		Class<? extends BeanDefinition> expectedBeanDefinitionType) {
	Set<BeanDefinition> candidates = provider.findCandidateComponents(TEST_BASE_PACKAGE);
	assertTrue(containsBeanClass(candidates, DefaultNamedComponent.class));
	assertTrue(containsBeanClass(candidates, NamedComponent.class));
	assertTrue(containsBeanClass(candidates, FooServiceImpl.class));
	assertTrue(containsBeanClass(candidates, StubFooDao.class));
	assertTrue(containsBeanClass(candidates, NamedStubDao.class));
	assertTrue(containsBeanClass(candidates, ServiceInvocationCounter.class));
	assertTrue(containsBeanClass(candidates, BarComponent.class));
	assertEquals(7, candidates.size());
	assertBeanDefinitionType(candidates, expectedBeanDefinitionType);
}
 
@Test
public void testWithDefaults() {
	ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(true);
	Set<BeanDefinition> candidates = provider.findCandidateComponents(TEST_BASE_PACKAGE);
	assertEquals(6, candidates.size());
	assertTrue(containsBeanClass(candidates, NamedComponent.class));
	assertTrue(containsBeanClass(candidates, FooServiceImpl.class));
	assertTrue(containsBeanClass(candidates, StubFooDao.class));
	assertTrue(containsBeanClass(candidates, NamedStubDao.class));
	assertTrue(containsBeanClass(candidates, ServiceInvocationCounter.class));
}
 
@Test
public void testWithComponentAnnotationOnly() {
	ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
	provider.addIncludeFilter(new AnnotationTypeFilter(Component.class));
	provider.addExcludeFilter(new AnnotationTypeFilter(Repository.class));
	provider.addExcludeFilter(new AnnotationTypeFilter(Service.class));
	provider.addExcludeFilter(new AnnotationTypeFilter(Controller.class));
	Set<BeanDefinition> candidates = provider.findCandidateComponents(TEST_BASE_PACKAGE);
	assertEquals(2, candidates.size());
	assertTrue(containsBeanClass(candidates, NamedComponent.class));
	assertTrue(containsBeanClass(candidates, ServiceInvocationCounter.class));
	assertFalse(containsBeanClass(candidates, FooServiceImpl.class));
	assertFalse(containsBeanClass(candidates, StubFooDao.class));
	assertFalse(containsBeanClass(candidates, NamedStubDao.class));
}