Polishing

This commit is contained in:
Juergen Hoeller
2018-01-07 23:33:35 +01:00
parent b6191f6057
commit 4a57e26d76
11 changed files with 124 additions and 57 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2017 the original author or authors.
* Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -43,6 +43,7 @@ import org.mockito.Mockito;
import org.springframework.beans.factory.BeanCreationException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.NoUniqueBeanDefinitionException;
@@ -152,6 +153,35 @@ public class AutowiredAnnotationBeanPostProcessorTests {
assertEquals("nestedTestBean", depBeans[1]);
}
@Test
public void testExtendedResourceInjectionWithDestruction() {
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
bf.registerResolvableDependency(BeanFactory.class, bf);
AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor();
bpp.setBeanFactory(bf);
bf.addBeanPostProcessor(bpp);
bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(TypedExtendedResourceInjectionBean.class));
bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class));
NestedTestBean ntb = new NestedTestBean();
bf.registerSingleton("nestedTestBean", ntb);
TestBean tb = bf.getBean("testBean", TestBean.class);
TypedExtendedResourceInjectionBean bean = (TypedExtendedResourceInjectionBean) bf.getBean("annotatedBean");
assertSame(tb, bean.getTestBean());
assertSame(tb, bean.getTestBean2());
assertSame(tb, bean.getTestBean3());
assertSame(tb, bean.getTestBean4());
assertSame(ntb, bean.getNestedTestBean());
assertSame(bf, bean.getBeanFactory());
assertArrayEquals(new String[] {"testBean", "nestedTestBean"}, bf.getDependenciesForBean("annotatedBean"));
bf.destroySingleton("testBean");
assertFalse(bf.containsSingleton("testBean"));
assertFalse(bf.containsSingleton("annotatedBean"));
assertTrue(bean.destroyed);
assertSame(0, bf.getDependenciesForBean("annotatedBean").length);
}
@Test
public void testExtendedResourceInjectionWithOverriding() {
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
@@ -1286,9 +1316,6 @@ public class AutowiredAnnotationBeanPostProcessorTests {
bf.destroySingletons();
}
@Qualifier("testBean")
private void testBeanQualifierProvider() {}
@Test
public void testObjectFactorySerialization() throws Exception {
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
@@ -2494,6 +2521,9 @@ public class AutowiredAnnotationBeanPostProcessorTests {
}
@Qualifier("testBean")
private void testBeanQualifierProvider() {}
@Qualifier("integerRepo")
private Repository<?> integerRepositoryQualifierProvider;
@@ -2579,7 +2609,15 @@ public class AutowiredAnnotationBeanPostProcessorTests {
}
public static class TypedExtendedResourceInjectionBean extends NonPublicResourceInjectionBean<NestedTestBean> {
public static class TypedExtendedResourceInjectionBean extends NonPublicResourceInjectionBean<NestedTestBean>
implements DisposableBean {
public boolean destroyed = false;
@Override
public void destroy() {
this.destroyed = true;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2017 the original author or authors.
* Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -49,8 +49,7 @@ public class XmlBeanDefinitionReaderTests {
@Test(expected = BeanDefinitionStoreException.class)
public void withOpenInputStream() {
SimpleBeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry();
Resource resource = new InputStreamResource(getClass().getResourceAsStream(
"test.xml"));
Resource resource = new InputStreamResource(getClass().getResourceAsStream("test.xml"));
new XmlBeanDefinitionReader(registry).loadBeanDefinitions(resource);
}
@@ -122,16 +121,16 @@ public class XmlBeanDefinitionReaderTests {
}
@Test
public void dtdValidationAutodetect() throws Exception {
public void dtdValidationAutodetect() {
doTestValidation("validateWithDtd.xml");
}
@Test
public void xsdValidationAutodetect() throws Exception {
public void xsdValidationAutodetect() {
doTestValidation("validateWithXsd.xml");
}
private void doTestValidation(String resourceName) throws Exception {
private void doTestValidation(String resourceName) {
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
Resource resource = new ClassPathResource(resourceName, getClass());
new XmlBeanDefinitionReader(factory).loadBeanDefinitions(resource);