From f677d684e77b47686b71b50ffced2e85b5ad699b Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 24 Jul 2018 15:00:35 +0200 Subject: [PATCH] Polishing --- .../DefaultListableBeanFactoryTests.java | 9 +- ...wiredAnnotationBeanPostProcessorTests.java | 672 ++++-------------- ...njectAnnotationBeanPostProcessorTests.java | 223 +----- .../OkHttp3ClientHttpRequestFactory.java | 6 +- 4 files changed, 169 insertions(+), 741 deletions(-) diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/DefaultListableBeanFactoryTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/DefaultListableBeanFactoryTests.java index 4042868443f..f55a0853904 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/DefaultListableBeanFactoryTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/DefaultListableBeanFactoryTests.java @@ -1567,6 +1567,7 @@ public class DefaultListableBeanFactoryTests { RootBeanDefinition bd1 = createConstructorDependencyBeanDefinition(99); parent.registerBeanDefinition("bd1", bd1); DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(parent); + ConstructorDependency bean = lbf.getBean(ConstructorDependency.class, 42); assertThat(bean.beanName, equalTo("bd1")); assertThat(bean.spouseAge, equalTo(42)); @@ -1579,7 +1580,6 @@ public class DefaultListableBeanFactoryTests { RootBeanDefinition bd2 = new RootBeanDefinition(ConstructorDependency.class); bd2.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bd2.getConstructorArgumentValues().addGenericArgumentValue("43"); - lbf.registerBeanDefinition("bd1", bd1); lbf.registerBeanDefinition("bd2", bd2); @@ -1595,6 +1595,7 @@ public class DefaultListableBeanFactoryTests { bd2.setPrimary(true); lbf.registerBeanDefinition("bd1", bd1); lbf.registerBeanDefinition("bd2", bd2); + ConstructorDependency bean = lbf.getBean(ConstructorDependency.class, 42); assertThat(bean.beanName, equalTo("bd2")); assertThat(bean.spouseAge, equalTo(42)); @@ -1607,9 +1608,9 @@ public class DefaultListableBeanFactoryTests { RootBeanDefinition bd2 = createConstructorDependencyBeanDefinition(43); bd1.setPrimary(true); bd2.setPrimary(true); - lbf.registerBeanDefinition("bd1", bd1); lbf.registerBeanDefinition("bd2", bd2); + thrown.expect(NoUniqueBeanDefinitionException.class); thrown.expectMessage(containsString("more than one 'primary'")); lbf.getBean(ConstructorDependency.class, 42); @@ -1661,7 +1662,7 @@ public class DefaultListableBeanFactoryTests { private RootBeanDefinition createConstructorDependencyBeanDefinition(int age) { RootBeanDefinition bd = new RootBeanDefinition(ConstructorDependency.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); - bd.getConstructorArgumentValues().addGenericArgumentValue(String.valueOf(age)); + bd.getConstructorArgumentValues().addGenericArgumentValue(age); return bd; } @@ -2383,7 +2384,7 @@ public class DefaultListableBeanFactoryTests { } sw.stop(); // System.out.println(sw.getTotalTimeMillis()); - assertTrue("Prototype creation took too long: " + sw.getTotalTimeMillis(), sw.getTotalTimeMillis() < 3000); + assertTrue("Prototype creation took too long: " + sw.getTotalTimeMillis(), sw.getTotalTimeMillis() < 4000); } @Test diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessorTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessorTests.java index 463dba2ed0e..121b49d760d 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessorTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessorTests.java @@ -24,6 +24,7 @@ import java.lang.annotation.Target; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -35,7 +36,10 @@ import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.concurrent.Callable; +import java.util.stream.Collectors; +import org.junit.After; +import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.mockito.Mockito; @@ -79,12 +83,30 @@ import static org.junit.Assert.*; */ public class AutowiredAnnotationBeanPostProcessorTests { - @Test - public void testIncompleteBeanDefinition() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); + private DefaultListableBeanFactory bf; + + private AutowiredAnnotationBeanPostProcessor bpp; + + + @Before + public void setup() { + bf = new DefaultListableBeanFactory(); + bf.registerResolvableDependency(BeanFactory.class, bf); + bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setBeanFactory(bf); bf.addBeanPostProcessor(bpp); + bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); + bf.setDependencyComparator(AnnotationAwareOrderComparator.INSTANCE); + } + + @After + public void close() { + bf.destroySingletons(); + } + + + @Test + public void testIncompleteBeanDefinition() { bf.registerBeanDefinition("testBean", new GenericBeanDefinition()); try { bf.getBean("testBean"); @@ -97,10 +119,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(ResourceInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -118,11 +136,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testExtendedResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.registerResolvableDependency(BeanFactory.class, bf); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(TypedExtendedResourceInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -155,11 +168,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @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(); @@ -184,11 +192,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testExtendedResourceInjectionWithOverriding() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.registerResolvableDependency(BeanFactory.class, bf); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition annotatedBd = new RootBeanDefinition(TypedExtendedResourceInjectionBean.class); TestBean tb2 = new TestBean(); annotatedBd.getPropertyValues().add("testBean2", tb2); @@ -205,16 +208,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertSame(tb, bean.getTestBean4()); assertSame(ntb, bean.getNestedTestBean()); assertSame(bf, bean.getBeanFactory()); - bf.destroySingletons(); } @Test public void testExtendedResourceInjectionWithSkippedOverriddenMethods() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.registerResolvableDependency(BeanFactory.class, bf); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition annotatedBd = new RootBeanDefinition(OverriddenExtendedResourceInjectionBean.class); bf.registerBeanDefinition("annotatedBean", annotatedBd); TestBean tb = new TestBean(); @@ -231,16 +228,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertNull(bean.getBeanFactory()); assertTrue(bean.baseInjected); assertTrue(bean.subInjected); - bf.destroySingletons(); } @Test public void testExtendedResourceInjectionWithDefaultMethod() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.registerResolvableDependency(BeanFactory.class, bf); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition annotatedBd = new RootBeanDefinition(DefaultMethodResourceInjectionBean.class); bf.registerBeanDefinition("annotatedBean", annotatedBd); TestBean tb = new TestBean(); @@ -257,16 +248,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertNull(bean.getBeanFactory()); assertTrue(bean.baseInjected); assertTrue(bean.subInjected); - bf.destroySingletons(); } @Test public void testExtendedResourceInjectionWithAtRequired() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.registerResolvableDependency(BeanFactory.class, bf); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.addBeanPostProcessor(new RequiredAnnotationBeanPostProcessor()); RootBeanDefinition bd = new RootBeanDefinition(TypedExtendedResourceInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); @@ -287,10 +272,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testOptionalResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(OptionalResourceInjectionBean.class)); TestBean tb = new TestBean(); bf.registerSingleton("testBean", tb); @@ -313,15 +294,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertEquals(2, bean.nestedTestBeansField.length); assertSame(ntb1, bean.nestedTestBeansField[0]); assertSame(ntb2, bean.nestedTestBeansField[1]); - bf.destroySingletons(); } @Test public void testOptionalCollectionResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition rbd = new RootBeanDefinition(OptionalCollectionResourceInjectionBean.class); rbd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", rbd); @@ -351,15 +327,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertEquals(2, bean.nestedTestBeansField.size()); assertSame(ntb1, bean.nestedTestBeansField.get(0)); assertSame(ntb2, bean.nestedTestBeansField.get(1)); - bf.destroySingletons(); } @Test public void testOptionalCollectionResourceInjectionWithSingleElement() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition rbd = new RootBeanDefinition(OptionalCollectionResourceInjectionBean.class); rbd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", rbd); @@ -384,15 +355,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertSame(ntb1, bean.nestedTestBeansSetter.get(0)); assertEquals(1, bean.nestedTestBeansField.size()); assertSame(ntb1, bean.nestedTestBeansField.get(0)); - bf.destroySingletons(); } @Test public void testOptionalResourceInjectionWithIncompleteDependencies() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(OptionalResourceInjectionBean.class)); TestBean tb = new TestBean(); bf.registerSingleton("testBean", tb); @@ -403,15 +369,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertSame(tb, bean.getTestBean3()); assertNull(bean.getTestBean4()); assertNull(bean.getNestedTestBeans()); - bf.destroySingletons(); } @Test public void testOptionalResourceInjectionWithNoDependencies() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(OptionalResourceInjectionBean.class)); OptionalResourceInjectionBean bean = (OptionalResourceInjectionBean) bf.getBean("annotatedBean"); @@ -420,16 +381,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertNull(bean.getTestBean3()); assertNull(bean.getTestBean4()); assertNull(bean.getNestedTestBeans()); - bf.destroySingletons(); } @Test public void testOrderedResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setDependencyComparator(AnnotationAwareOrderComparator.INSTANCE); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(OptionalResourceInjectionBean.class)); TestBean tb = new TestBean(); bf.registerSingleton("testBean", tb); @@ -454,16 +409,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertEquals(2, bean.nestedTestBeansField.length); assertSame(ntb2, bean.nestedTestBeansField[0]); assertSame(ntb1, bean.nestedTestBeansField[1]); - bf.destroySingletons(); } @Test public void testAnnotationOrderedResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setDependencyComparator(AnnotationAwareOrderComparator.INSTANCE); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(OptionalResourceInjectionBean.class)); TestBean tb = new TestBean(); bf.registerSingleton("testBean", tb); @@ -486,16 +435,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertEquals(2, bean.nestedTestBeansField.length); assertSame(ntb2, bean.nestedTestBeansField[0]); assertSame(ntb1, bean.nestedTestBeansField[1]); - bf.destroySingletons(); } @Test public void testOrderedCollectionResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setDependencyComparator(AnnotationAwareOrderComparator.INSTANCE); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition rbd = new RootBeanDefinition(OptionalCollectionResourceInjectionBean.class); rbd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", rbd); @@ -527,16 +470,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertEquals(2, bean.nestedTestBeansField.size()); assertSame(ntb2, bean.nestedTestBeansField.get(0)); assertSame(ntb1, bean.nestedTestBeansField.get(1)); - bf.destroySingletons(); } @Test public void testAnnotationOrderedCollectionResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setDependencyComparator(AnnotationAwareOrderComparator.INSTANCE); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition rbd = new RootBeanDefinition(OptionalCollectionResourceInjectionBean.class); rbd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", rbd); @@ -566,16 +503,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertEquals(2, bean.nestedTestBeansField.size()); assertSame(ntb2, bean.nestedTestBeansField.get(0)); assertSame(ntb1, bean.nestedTestBeansField.get(1)); - bf.destroySingletons(); } @Test public void testConstructorResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.registerResolvableDependency(BeanFactory.class, bf); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(ConstructorResourceInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -603,12 +534,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testConstructorResourceInjectionWithNullFromFactoryBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - bf.registerResolvableDependency(BeanFactory.class, bf); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(ConstructorResourceInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -636,12 +561,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testConstructorResourceInjectionWithNullFromFactoryMethod() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - bf.registerResolvableDependency(BeanFactory.class, bf); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(ConstructorResourceInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -672,10 +591,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testConstructorResourceInjectionWithMultipleCandidates() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ConstructorsResourceInjectionBean.class)); TestBean tb = new TestBean(); bf.registerSingleton("testBean", tb); @@ -690,15 +605,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertEquals(2, bean.getNestedTestBeans().length); assertSame(ntb1, bean.getNestedTestBeans()[0]); assertSame(ntb2, bean.getNestedTestBeans()[1]); - bf.destroySingletons(); } @Test public void testConstructorResourceInjectionWithNoCandidatesAndNoFallback() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ConstructorWithoutFallbackBean.class)); try { @@ -713,10 +623,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testConstructorResourceInjectionWithCollectionAndNullFromFactoryBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition( ConstructorsCollectionResourceInjectionBean.class)); TestBean tb = new TestBean(); @@ -735,16 +641,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { Map map = bf.getBeansOfType(NestedTestBean.class); assertNull(map.get("nestedTestBean1")); assertSame(ntb2, map.get("nestedTestBean2")); - - bf.destroySingletons(); } @Test public void testConstructorResourceInjectionWithMultipleCandidatesAsCollection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition( ConstructorsCollectionResourceInjectionBean.class)); TestBean tb = new TestBean(); @@ -760,16 +660,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertEquals(2, bean.getNestedTestBeans().size()); assertSame(ntb1, bean.getNestedTestBeans().get(0)); assertSame(ntb2, bean.getNestedTestBeans().get(1)); - bf.destroySingletons(); } @Test public void testConstructorResourceInjectionWithMultipleOrderedCandidates() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setDependencyComparator(AnnotationAwareOrderComparator.INSTANCE); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ConstructorsResourceInjectionBean.class)); TestBean tb = new TestBean(); bf.registerSingleton("testBean", tb); @@ -784,16 +678,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertEquals(2, bean.getNestedTestBeans().length); assertSame(ntb2, bean.getNestedTestBeans()[0]); assertSame(ntb1, bean.getNestedTestBeans()[1]); - bf.destroySingletons(); } @Test public void testConstructorResourceInjectionWithMultipleCandidatesAsOrderedCollection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setDependencyComparator(AnnotationAwareOrderComparator.INSTANCE); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ConstructorsCollectionResourceInjectionBean.class)); TestBean tb = new TestBean(); bf.registerSingleton("testBean", tb); @@ -808,17 +696,45 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertEquals(2, bean.getNestedTestBeans().size()); assertSame(ntb2, bean.getNestedTestBeans().get(0)); assertSame(ntb1, bean.getNestedTestBeans().get(1)); - bf.destroySingletons(); + } + + @Test + public void testSingleConstructorInjectionWithMultipleCandidatesAsRequiredVararg() { + bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SingleConstructorVarargBean.class)); + TestBean tb = new TestBean(); + bf.registerSingleton("testBean", tb); + FixedOrder2NestedTestBean ntb1 = new FixedOrder2NestedTestBean(); + bf.registerSingleton("nestedTestBean1", ntb1); + FixedOrder1NestedTestBean ntb2 = new FixedOrder1NestedTestBean(); + bf.registerSingleton("nestedTestBean2", ntb2); + + SingleConstructorVarargBean bean = (SingleConstructorVarargBean) bf.getBean("annotatedBean"); + assertSame(tb, bean.getTestBean()); + assertEquals(2, bean.getNestedTestBeans().size()); + assertSame(ntb2, bean.getNestedTestBeans().get(0)); + assertSame(ntb1, bean.getNestedTestBeans().get(1)); + } + + @Test + public void testSingleConstructorInjectionWithMultipleCandidatesAsRequiredCollection() { + bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SingleConstructorRequiredCollectionBean.class)); + TestBean tb = new TestBean(); + bf.registerSingleton("testBean", tb); + FixedOrder2NestedTestBean ntb1 = new FixedOrder2NestedTestBean(); + bf.registerSingleton("nestedTestBean1", ntb1); + FixedOrder1NestedTestBean ntb2 = new FixedOrder1NestedTestBean(); + bf.registerSingleton("nestedTestBean2", ntb2); + + SingleConstructorRequiredCollectionBean bean = (SingleConstructorRequiredCollectionBean) bf.getBean("annotatedBean"); + assertSame(tb, bean.getTestBean()); + assertEquals(2, bean.getNestedTestBeans().size()); + assertSame(ntb2, bean.getNestedTestBeans().get(0)); + assertSame(ntb1, bean.getNestedTestBeans().get(1)); } @Test public void testSingleConstructorInjectionWithMultipleCandidatesAsOrderedCollection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setDependencyComparator(AnnotationAwareOrderComparator.INSTANCE); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); - bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SingleConstructorCollectionInjectionBean.class)); + bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SingleConstructorOptionalCollectionBean.class)); TestBean tb = new TestBean(); bf.registerSingleton("testBean", tb); FixedOrder2NestedTestBean ntb1 = new FixedOrder2NestedTestBean(); @@ -826,51 +742,33 @@ public class AutowiredAnnotationBeanPostProcessorTests { FixedOrder1NestedTestBean ntb2 = new FixedOrder1NestedTestBean(); bf.registerSingleton("nestedTestBean2", ntb2); - SingleConstructorCollectionInjectionBean bean = (SingleConstructorCollectionInjectionBean) bf.getBean("annotatedBean"); + SingleConstructorOptionalCollectionBean bean = (SingleConstructorOptionalCollectionBean) bf.getBean("annotatedBean"); assertSame(tb, bean.getTestBean()); assertEquals(2, bean.getNestedTestBeans().size()); assertSame(ntb2, bean.getNestedTestBeans().get(0)); assertSame(ntb1, bean.getNestedTestBeans().get(1)); - bf.destroySingletons(); } @Test - public void testSingleConstructorInjectionWithEmptyCollection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); - bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SingleConstructorCollectionInjectionBean.class)); + public void testSingleConstructorInjectionWithEmptyCollectionAsNull() { + bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SingleConstructorOptionalCollectionBean.class)); TestBean tb = new TestBean(); bf.registerSingleton("testBean", tb); - SingleConstructorCollectionInjectionBean bean = (SingleConstructorCollectionInjectionBean) bf.getBean("annotatedBean"); + SingleConstructorOptionalCollectionBean bean = (SingleConstructorOptionalCollectionBean) bf.getBean("annotatedBean"); assertSame(tb, bean.getTestBean()); assertNull(bean.getNestedTestBeans()); - bf.destroySingletons(); } @Test(expected = UnsatisfiedDependencyException.class) public void testSingleConstructorInjectionWithMissingDependency() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); - bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SingleConstructorCollectionInjectionBean.class)); - + bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SingleConstructorOptionalCollectionBean.class)); bf.getBean("annotatedBean"); } @Test(expected = UnsatisfiedDependencyException.class) public void testSingleConstructorInjectionWithNullDependency() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); - bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SingleConstructorCollectionInjectionBean.class)); + bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SingleConstructorOptionalCollectionBean.class)); RootBeanDefinition tb = new RootBeanDefinition(NullFactoryMethods.class); tb.setFactoryMethodName("createTestBean"); bf.registerBeanDefinition("testBean", tb); @@ -880,10 +778,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testConstructorResourceInjectionWithMultipleCandidatesAndFallback() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ConstructorsResourceInjectionBean.class)); TestBean tb = new TestBean(); bf.registerSingleton("testBean", tb); @@ -891,29 +785,19 @@ public class AutowiredAnnotationBeanPostProcessorTests { ConstructorsResourceInjectionBean bean = (ConstructorsResourceInjectionBean) bf.getBean("annotatedBean"); assertSame(tb, bean.getTestBean3()); assertNull(bean.getTestBean4()); - bf.destroySingletons(); } @Test public void testConstructorResourceInjectionWithMultipleCandidatesAndDefaultFallback() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ConstructorsResourceInjectionBean.class)); ConstructorsResourceInjectionBean bean = (ConstructorsResourceInjectionBean) bf.getBean("annotatedBean"); assertNull(bean.getTestBean3()); assertNull(bean.getTestBean4()); - bf.destroySingletons(); } @Test public void testConstructorInjectionWithMap() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(MapConstructorInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -936,10 +820,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testFieldInjectionWithMap() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(MapFieldInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -965,10 +845,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testMethodInjectionWithMap() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(MapMethodInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -990,10 +866,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testMethodInjectionWithMapAndMultipleMatches() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(MapMethodInjectionBean.class)); bf.registerBeanDefinition("testBean1", new RootBeanDefinition(TestBean.class)); bf.registerBeanDefinition("testBean2", new RootBeanDefinition(TestBean.class)); @@ -1006,15 +878,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { // expected assertSame(MapMethodInjectionBean.class, ex.getInjectionPoint().getMethodParameter().getDeclaringClass()); } - bf.destroySingletons(); } @Test public void testMethodInjectionWithMapAndMultipleMatchesButOnlyOneAutowireCandidate() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(MapMethodInjectionBean.class)); bf.registerBeanDefinition("testBean1", new RootBeanDefinition(TestBean.class)); RootBeanDefinition rbd2 = new RootBeanDefinition(TestBean.class); @@ -1027,30 +894,19 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertTrue(bean.getTestBeanMap().keySet().contains("testBean1")); assertTrue(bean.getTestBeanMap().values().contains(tb)); assertSame(tb, bean.getTestBean()); - bf.destroySingletons(); } @Test public void testMethodInjectionWithMapAndNoMatches() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(MapMethodInjectionBean.class)); MapMethodInjectionBean bean = (MapMethodInjectionBean) bf.getBean("annotatedBean"); assertNull(bean.getTestBeanMap()); assertNull(bean.getTestBean()); - bf.destroySingletons(); } @Test public void testConstructorInjectionWithTypedMapAsBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(MapConstructorInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -1068,11 +924,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testConstructorInjectionWithPlainMapAsBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(MapConstructorInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -1089,11 +940,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testConstructorInjectionWithCustomMapAsBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(CustomMapConstructorInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -1111,11 +957,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testConstructorInjectionWithTypedSetAsBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(SetConstructorInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -1133,11 +974,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testConstructorInjectionWithPlainSetAsBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(SetConstructorInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -1154,11 +990,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testConstructorInjectionWithCustomSetAsBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(CustomSetConstructorInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -1174,11 +1005,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testSelfReference() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SelfInjectionBean.class)); SelfInjectionBean bean = (SelfInjectionBean) bf.getBean("annotatedBean"); @@ -1188,11 +1014,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testSelfReferenceWithOther() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SelfInjectionBean.class)); bf.registerBeanDefinition("annotatedBean2", new RootBeanDefinition(SelfInjectionBean.class)); @@ -1205,11 +1026,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testSelfReferenceCollection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SelfInjectionCollectionBean.class)); SelfInjectionCollectionBean bean = (SelfInjectionCollectionBean) bf.getBean("annotatedBean"); @@ -1219,11 +1035,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testSelfReferenceCollectionWithOther() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SelfInjectionCollectionBean.class)); bf.registerBeanDefinition("annotatedBean2", new RootBeanDefinition(SelfInjectionCollectionBean.class)); @@ -1236,38 +1047,24 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testObjectFactoryFieldInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectFactoryFieldInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); ObjectFactoryFieldInjectionBean bean = (ObjectFactoryFieldInjectionBean) bf.getBean("annotatedBean"); assertSame(bf.getBean("testBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test public void testObjectFactoryConstructorInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectFactoryConstructorInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); ObjectFactoryConstructorInjectionBean bean = (ObjectFactoryConstructorInjectionBean) bf.getBean("annotatedBean"); assertSame(bf.getBean("testBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test public void testObjectFactoryInjectionIntoPrototypeBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition annotatedBeanDefinition = new RootBeanDefinition(ObjectFactoryFieldInjectionBean.class); annotatedBeanDefinition.setScope(BeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", annotatedBeanDefinition); @@ -1282,11 +1079,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testObjectFactoryQualifierInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectFactoryQualifierInjectionBean.class)); RootBeanDefinition bd = new RootBeanDefinition(TestBean.class); bd.addQualifier(new AutowireCandidateQualifier(Qualifier.class, "testBean")); @@ -1295,16 +1087,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { ObjectFactoryQualifierInjectionBean bean = (ObjectFactoryQualifierInjectionBean) bf.getBean("annotatedBean"); assertSame(bf.getBean("dependencyBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test public void testObjectFactoryQualifierProviderInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectFactoryQualifierInjectionBean.class)); RootBeanDefinition bd = new RootBeanDefinition(TestBean.class); bd.setQualifiedElement(ReflectionUtils.findMethod(getClass(), "testBeanQualifierProvider")); @@ -1313,15 +1099,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { ObjectFactoryQualifierInjectionBean bean = (ObjectFactoryQualifierInjectionBean) bf.getBean("annotatedBean"); assertSame(bf.getBean("dependencyBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test public void testObjectFactorySerialization() throws Exception { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectFactoryFieldInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); bf.setSerializationId("test"); @@ -1330,21 +1111,16 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertSame(bf.getBean("testBean"), bean.getTestBean()); bean = (ObjectFactoryFieldInjectionBean) SerializationTestUtils.serializeAndDeserialize(bean); assertSame(bf.getBean("testBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test - public void testSmartObjectFactoryInjectionWithPrototype() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); - bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SmartObjectFactoryInjectionBean.class)); + public void testObjectProviderInjectionWithPrototype() { + bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectProviderInjectionBean.class)); RootBeanDefinition tbd = new RootBeanDefinition(TestBean.class); tbd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("testBean", tbd); - SmartObjectFactoryInjectionBean bean = (SmartObjectFactoryInjectionBean) bf.getBean("annotatedBean"); + ObjectProviderInjectionBean bean = (ObjectProviderInjectionBean) bf.getBean("annotatedBean"); assertEquals(bf.getBean("testBean"), bean.getTestBean()); assertEquals(bf.getBean("testBean", "myName"), bean.getTestBean("myName")); assertEquals(bf.getBean("testBean"), bean.getOptionalTestBean()); @@ -1353,19 +1129,14 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertEquals(bf.getBean("testBean"), bean.getUniqueTestBean()); assertEquals(bf.getBean("testBean"), bean.getUniqueTestBeanWithDefault()); assertEquals(bf.getBean("testBean"), bean.consumeUniqueTestBean()); - bf.destroySingletons(); } @Test - public void testSmartObjectFactoryInjectionWithSingletonTarget() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); - bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SmartObjectFactoryInjectionBean.class)); + public void testObjectProviderInjectionWithSingletonTarget() { + bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectProviderInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); - SmartObjectFactoryInjectionBean bean = (SmartObjectFactoryInjectionBean) bf.getBean("annotatedBean"); + ObjectProviderInjectionBean bean = (ObjectProviderInjectionBean) bf.getBean("annotatedBean"); assertSame(bf.getBean("testBean"), bean.getTestBean()); assertSame(bf.getBean("testBean"), bean.getOptionalTestBean()); assertSame(bf.getBean("testBean"), bean.getOptionalTestBeanWithDefault()); @@ -1373,18 +1144,13 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertSame(bf.getBean("testBean"), bean.getUniqueTestBean()); assertSame(bf.getBean("testBean"), bean.getUniqueTestBeanWithDefault()); assertEquals(bf.getBean("testBean"), bean.consumeUniqueTestBean()); - bf.destroySingletons(); } @Test - public void testSmartObjectFactoryInjectionWithTargetNotAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); - bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SmartObjectFactoryInjectionBean.class)); + public void testObjectProviderInjectionWithTargetNotAvailable() { + bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectProviderInjectionBean.class)); - SmartObjectFactoryInjectionBean bean = (SmartObjectFactoryInjectionBean) bf.getBean("annotatedBean"); + ObjectProviderInjectionBean bean = (ObjectProviderInjectionBean) bf.getBean("annotatedBean"); try { bean.getTestBean(); fail("Should have thrown NoSuchBeanDefinitionException"); @@ -1398,20 +1164,15 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertEquals(new TestBean("default"), bean.getUniqueTestBeanWithDefault()); assertNull(bean.getUniqueTestBean()); assertNull(bean.consumeUniqueTestBean()); - bf.destroySingletons(); } @Test - public void testSmartObjectFactoryInjectionWithTargetNotUnique() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); - bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SmartObjectFactoryInjectionBean.class)); + public void testObjectProviderInjectionWithTargetNotUnique() { + bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectProviderInjectionBean.class)); bf.registerBeanDefinition("testBean1", new RootBeanDefinition(TestBean.class)); bf.registerBeanDefinition("testBean2", new RootBeanDefinition(TestBean.class)); - SmartObjectFactoryInjectionBean bean = (SmartObjectFactoryInjectionBean) bf.getBean("annotatedBean"); + ObjectProviderInjectionBean bean = (ObjectProviderInjectionBean) bf.getBean("annotatedBean"); try { bean.getTestBean(); fail("Should have thrown NoUniqueBeanDefinitionException"); @@ -1435,16 +1196,11 @@ public class AutowiredAnnotationBeanPostProcessorTests { } assertNull(bean.getUniqueTestBean()); assertNull(bean.consumeUniqueTestBean()); - bf.destroySingletons(); } @Test - public void testSmartObjectFactoryInjectionWithTargetPrimary() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); - bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SmartObjectFactoryInjectionBean.class)); + public void testObjectProviderInjectionWithTargetPrimary() { + bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectProviderInjectionBean.class)); RootBeanDefinition tb1 = new RootBeanDefinition(TestBean.class); tb1.setPrimary(true); bf.registerBeanDefinition("testBean1", tb1); @@ -1452,25 +1208,20 @@ public class AutowiredAnnotationBeanPostProcessorTests { tb2.setLazyInit(true); bf.registerBeanDefinition("testBean2", tb2); - SmartObjectFactoryInjectionBean bean = (SmartObjectFactoryInjectionBean) bf.getBean("annotatedBean"); + ObjectProviderInjectionBean bean = (ObjectProviderInjectionBean) bf.getBean("annotatedBean"); assertSame(bf.getBean("testBean1"), bean.getTestBean()); assertSame(bf.getBean("testBean1"), bean.getOptionalTestBean()); assertSame(bf.getBean("testBean1"), bean.consumeOptionalTestBean()); assertSame(bf.getBean("testBean1"), bean.getUniqueTestBean()); assertSame(bf.getBean("testBean1"), bean.consumeUniqueTestBean()); assertFalse(bf.containsSingleton("testBean2")); - bf.destroySingletons(); } @Test public void testCustomAnnotationRequiredFieldResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setAutowiredAnnotationType(MyAutowired.class); bpp.setRequiredParameterName("optional"); bpp.setRequiredParameterValue(false); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("customBean", new RootBeanDefinition( CustomAnnotationRequiredFieldResourceInjectionBean.class)); TestBean tb = new TestBean(); @@ -1479,18 +1230,13 @@ public class AutowiredAnnotationBeanPostProcessorTests { CustomAnnotationRequiredFieldResourceInjectionBean bean = (CustomAnnotationRequiredFieldResourceInjectionBean) bf.getBean("customBean"); assertSame(tb, bean.getTestBean()); - bf.destroySingletons(); } @Test public void testCustomAnnotationRequiredFieldResourceInjectionFailsWhenNoDependencyFound() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setAutowiredAnnotationType(MyAutowired.class); bpp.setRequiredParameterName("optional"); bpp.setRequiredParameterValue(false); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("customBean", new RootBeanDefinition( CustomAnnotationRequiredFieldResourceInjectionBean.class)); @@ -1503,18 +1249,13 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertSame(CustomAnnotationRequiredFieldResourceInjectionBean.class, ex.getInjectionPoint().getField().getDeclaringClass()); } - bf.destroySingletons(); } @Test public void testCustomAnnotationRequiredFieldResourceInjectionFailsWhenMultipleDependenciesFound() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setAutowiredAnnotationType(MyAutowired.class); bpp.setRequiredParameterName("optional"); bpp.setRequiredParameterValue(false); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("customBean", new RootBeanDefinition( CustomAnnotationRequiredFieldResourceInjectionBean.class)); TestBean tb1 = new TestBean(); @@ -1531,18 +1272,13 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertSame(CustomAnnotationRequiredFieldResourceInjectionBean.class, ex.getInjectionPoint().getField().getDeclaringClass()); } - bf.destroySingletons(); } @Test public void testCustomAnnotationRequiredMethodResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setAutowiredAnnotationType(MyAutowired.class); bpp.setRequiredParameterName("optional"); bpp.setRequiredParameterValue(false); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("customBean", new RootBeanDefinition( CustomAnnotationRequiredMethodResourceInjectionBean.class)); TestBean tb = new TestBean(); @@ -1551,18 +1287,13 @@ public class AutowiredAnnotationBeanPostProcessorTests { CustomAnnotationRequiredMethodResourceInjectionBean bean = (CustomAnnotationRequiredMethodResourceInjectionBean) bf.getBean("customBean"); assertSame(tb, bean.getTestBean()); - bf.destroySingletons(); } @Test public void testCustomAnnotationRequiredMethodResourceInjectionFailsWhenNoDependencyFound() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setAutowiredAnnotationType(MyAutowired.class); bpp.setRequiredParameterName("optional"); bpp.setRequiredParameterValue(false); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("customBean", new RootBeanDefinition( CustomAnnotationRequiredMethodResourceInjectionBean.class)); @@ -1575,18 +1306,13 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertSame(CustomAnnotationRequiredMethodResourceInjectionBean.class, ex.getInjectionPoint().getMethodParameter().getDeclaringClass()); } - bf.destroySingletons(); } @Test public void testCustomAnnotationRequiredMethodResourceInjectionFailsWhenMultipleDependenciesFound() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setAutowiredAnnotationType(MyAutowired.class); bpp.setRequiredParameterName("optional"); bpp.setRequiredParameterValue(false); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("customBean", new RootBeanDefinition( CustomAnnotationRequiredMethodResourceInjectionBean.class)); TestBean tb1 = new TestBean(); @@ -1603,18 +1329,13 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertSame(CustomAnnotationRequiredMethodResourceInjectionBean.class, ex.getInjectionPoint().getMethodParameter().getDeclaringClass()); } - bf.destroySingletons(); } @Test public void testCustomAnnotationOptionalFieldResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setAutowiredAnnotationType(MyAutowired.class); bpp.setRequiredParameterName("optional"); bpp.setRequiredParameterValue(false); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("customBean", new RootBeanDefinition( CustomAnnotationOptionalFieldResourceInjectionBean.class)); TestBean tb = new TestBean(); @@ -1625,18 +1346,13 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertSame(tb, bean.getTestBean3()); assertNull(bean.getTestBean()); assertNull(bean.getTestBean2()); - bf.destroySingletons(); } @Test public void testCustomAnnotationOptionalFieldResourceInjectionWhenNoDependencyFound() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setAutowiredAnnotationType(MyAutowired.class); bpp.setRequiredParameterName("optional"); bpp.setRequiredParameterValue(false); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("customBean", new RootBeanDefinition( CustomAnnotationOptionalFieldResourceInjectionBean.class)); @@ -1645,18 +1361,13 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertNull(bean.getTestBean3()); assertNull(bean.getTestBean()); assertNull(bean.getTestBean2()); - bf.destroySingletons(); } @Test public void testCustomAnnotationOptionalFieldResourceInjectionWhenMultipleDependenciesFound() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setAutowiredAnnotationType(MyAutowired.class); bpp.setRequiredParameterName("optional"); bpp.setRequiredParameterValue(false); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("customBean", new RootBeanDefinition( CustomAnnotationOptionalFieldResourceInjectionBean.class)); TestBean tb1 = new TestBean(); @@ -1673,18 +1384,13 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertSame(CustomAnnotationOptionalFieldResourceInjectionBean.class, ex.getInjectionPoint().getField().getDeclaringClass()); } - bf.destroySingletons(); } @Test public void testCustomAnnotationOptionalMethodResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setAutowiredAnnotationType(MyAutowired.class); bpp.setRequiredParameterName("optional"); bpp.setRequiredParameterValue(false); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("customBean", new RootBeanDefinition( CustomAnnotationOptionalMethodResourceInjectionBean.class)); TestBean tb = new TestBean(); @@ -1695,18 +1401,13 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertSame(tb, bean.getTestBean3()); assertNull(bean.getTestBean()); assertNull(bean.getTestBean2()); - bf.destroySingletons(); } @Test public void testCustomAnnotationOptionalMethodResourceInjectionWhenNoDependencyFound() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setAutowiredAnnotationType(MyAutowired.class); bpp.setRequiredParameterName("optional"); bpp.setRequiredParameterValue(false); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("customBean", new RootBeanDefinition( CustomAnnotationOptionalMethodResourceInjectionBean.class)); @@ -1715,18 +1416,13 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertNull(bean.getTestBean3()); assertNull(bean.getTestBean()); assertNull(bean.getTestBean2()); - bf.destroySingletons(); } @Test public void testCustomAnnotationOptionalMethodResourceInjectionWhenMultipleDependenciesFound() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setAutowiredAnnotationType(MyAutowired.class); bpp.setRequiredParameterName("optional"); bpp.setRequiredParameterValue(false); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("customBean", new RootBeanDefinition( CustomAnnotationOptionalMethodResourceInjectionBean.class)); TestBean tb1 = new TestBean(); @@ -1743,7 +1439,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertSame(CustomAnnotationOptionalMethodResourceInjectionBean.class, ex.getInjectionPoint().getMethodParameter().getDeclaringClass()); } - bf.destroySingletons(); } /** @@ -1755,10 +1450,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { */ @Test public void testBeanAutowiredWithFactoryBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("factoryBeanDependentBean", new RootBeanDefinition(FactoryBeanDependentBean.class)); bf.registerSingleton("stringFactoryBean", new StringFactoryBean()); @@ -1769,17 +1460,10 @@ public class AutowiredAnnotationBeanPostProcessorTests { assertNotNull("The factoryBeanDependentBean should have been registered.", bean); assertEquals("The FactoryBeanDependentBean should have been autowired 'by type' with the StringFactoryBean.", factoryBean, bean.getFactoryBean()); - - bf.destroySingletons(); } @Test public void testGenericsBasedFieldInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryFieldInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -1825,11 +1509,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testGenericsBasedFieldInjectionWithSubstitutedVariables() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryFieldInjectionBeanWithSubstitutedVariables.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -1875,11 +1554,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testGenericsBasedFieldInjectionWithQualifiers() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryFieldInjectionBeanWithQualifiers.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -1907,11 +1581,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testGenericsBasedFieldInjectionWithMocks() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryFieldInjectionBeanWithQualifiers.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -1951,11 +1620,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testGenericsBasedFieldInjectionWithSimpleMatch() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryFieldInjectionBeanWithSimpleMatch.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -1984,11 +1648,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testGenericsBasedFactoryBeanInjectionWithBeanDefinition() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryFactoryBeanInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -2001,11 +1660,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testGenericsBasedFactoryBeanInjectionWithSingletonBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryFactoryBeanInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -2018,11 +1672,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testGenericsBasedFieldInjectionWithSimpleMatchAndMock() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryFieldInjectionBeanWithSimpleMatch.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -2055,11 +1704,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testGenericsBasedFieldInjectionWithSimpleMatchAndMockito() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryFieldInjectionBeanWithSimpleMatch.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -2091,11 +1735,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testGenericsBasedMethodInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryMethodInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -2141,11 +1780,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testGenericsBasedMethodInjectionWithSubstitutedVariables() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryMethodInjectionBeanWithSubstitutedVariables.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -2191,11 +1825,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testGenericsBasedConstructorInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryConstructorInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -2224,11 +1853,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test @SuppressWarnings("rawtypes") public void testGenericsBasedConstructorInjectionWithNonTypedTarget() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryConstructorInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -2254,11 +1878,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testGenericsBasedConstructorInjectionWithNonGenericTarget() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryConstructorInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -2285,11 +1904,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test @SuppressWarnings("rawtypes") public void testGenericsBasedConstructorInjectionWithMixedTargets() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryConstructorInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -2317,11 +1931,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testGenericsBasedConstructorInjectionWithMixedTargetsIncludingNonGeneric() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(RepositoryConstructorInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -2350,11 +1959,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test @SuppressWarnings("rawtypes") public void testGenericsBasedInjectionIntoMatchingTypeVariable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(GenericInterface1Impl.class); bd.setFactoryMethodName("create"); bf.registerBeanDefinition("bean1", bd); @@ -2368,11 +1972,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test @SuppressWarnings("rawtypes") public void testGenericsBasedInjectionIntoUnresolvedTypeVariable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(GenericInterface1Impl.class); bd.setFactoryMethodName("createPlain"); bf.registerBeanDefinition("bean1", bd); @@ -2386,11 +1985,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test @SuppressWarnings("rawtypes") public void testGenericsBasedInjectionIntoTypeVariableSelectingBestMatch() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(GenericInterface1Impl.class); bd.setFactoryMethodName("create"); bf.registerBeanDefinition("bean1", bd); @@ -2401,7 +1995,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { GenericInterface1Impl bean1 = (GenericInterface1Impl) bf.getBean("bean1"); GenericInterface2Impl bean2 = (GenericInterface2Impl) bf.getBean("bean2"); assertSame(bean2, bean1.gi2); - assertArrayEquals(new String[] {"bean1"}, bf.getBeanNamesForType(ResolvableType.forClassWithGenerics(GenericInterface1.class, String.class))); assertArrayEquals(new String[] {"bean2"}, bf.getBeanNamesForType(ResolvableType.forClassWithGenerics(GenericInterface2.class, String.class))); } @@ -2410,11 +2003,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Ignore // SPR-11521 @SuppressWarnings("rawtypes") public void testGenericsBasedInjectionIntoTypeVariableSelectingBestMatchAgainstFactoryMethodSignature() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(GenericInterface1Impl.class); bd.setFactoryMethodName("createErased"); bf.registerBeanDefinition("bean1", bd); @@ -2428,12 +2016,7 @@ public class AutowiredAnnotationBeanPostProcessorTests { } @Test - public void testGenericsBasedInjectionWithBeanDefinitionTargetResolvableType() throws Exception { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); + public void testGenericsBasedInjectionWithBeanDefinitionTargetResolvableType() { RootBeanDefinition bd1 = new RootBeanDefinition(GenericInterface2Bean.class); bd1.setTargetType(ResolvableType.forClassWithGenerics(GenericInterface2Bean.class, String.class)); bf.registerBeanDefinition("bean1", bd1); @@ -2447,11 +2030,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testCircularTypeReference() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("bean1", new RootBeanDefinition(StockServiceImpl.class)); bf.registerBeanDefinition("bean2", new RootBeanDefinition(StockMovementDaoImpl.class)); bf.registerBeanDefinition("bean3", new RootBeanDefinition(StockMovementImpl.class)); @@ -2463,10 +2041,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testBridgeMethodHandling() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("bean1", new RootBeanDefinition(MyCallable.class)); bf.registerBeanDefinition("bean2", new RootBeanDefinition(SecondCallable.class)); bf.registerBeanDefinition("bean3", new RootBeanDefinition(FooBar.class)); @@ -2475,10 +2049,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testSingleConstructorWithProvidedArgument() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(ProvidedArgumentBean.class); bd.getConstructorArgumentValues().addGenericArgumentValue(Collections.singletonList("value")); bf.registerBeanDefinition("beanWithArgs", bd); @@ -2487,8 +2057,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test public void testAnnotatedDefaultConstructor() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.addBeanPostProcessor(new AutowiredAnnotationBeanPostProcessor()); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(AnnotatedDefaultConstructorBean.class)); assertNotNull(bf.getBean("annotatedBean")); @@ -2496,10 +2064,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test // SPR-15125 public void testFactoryBeanSelfInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SelfInjectingFactoryBean.class)); SelfInjectingFactoryBean bean = bf.getBean(SelfInjectingFactoryBean.class); @@ -2508,10 +2072,6 @@ public class AutowiredAnnotationBeanPostProcessorTests { @Test // SPR-15125 public void testFactoryBeanSelfInjectionViaFactoryMethod() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(SelfInjectingFactoryBean.class); bd.setFactoryMethodName("create"); bf.registerBeanDefinition("annotatedBean", bd); @@ -2939,13 +2499,55 @@ public class AutowiredAnnotationBeanPostProcessorTests { } - public static class SingleConstructorCollectionInjectionBean { + public static class SingleConstructorVarargBean { private ITestBean testBean; private List nestedTestBeans; - public SingleConstructorCollectionInjectionBean(ITestBean testBean, + public SingleConstructorVarargBean(ITestBean testBean, NestedTestBean... nestedTestBeans) { + this.testBean = testBean; + this.nestedTestBeans = Arrays.asList(nestedTestBeans); + } + + public ITestBean getTestBean() { + return this.testBean; + } + + public List getNestedTestBeans() { + return this.nestedTestBeans; + } + } + + + public static class SingleConstructorRequiredCollectionBean { + + private ITestBean testBean; + + private List nestedTestBeans; + + public SingleConstructorRequiredCollectionBean(ITestBean testBean, List nestedTestBeans) { + this.testBean = testBean; + this.nestedTestBeans = nestedTestBeans; + } + + public ITestBean getTestBean() { + return this.testBean; + } + + public List getNestedTestBeans() { + return this.nestedTestBeans; + } + } + + + public static class SingleConstructorOptionalCollectionBean { + + private ITestBean testBean; + + private List nestedTestBeans; + + public SingleConstructorOptionalCollectionBean(ITestBean testBean, @Autowired(required = false) List nestedTestBeans) { this.testBean = testBean; this.nestedTestBeans = nestedTestBeans; @@ -3094,44 +2696,44 @@ public class AutowiredAnnotationBeanPostProcessorTests { } - public static class SmartObjectFactoryInjectionBean { + public static class ObjectProviderInjectionBean { @Autowired - private ObjectProvider testBeanFactory; + private ObjectProvider testBeanProvider; private TestBean consumedTestBean; public TestBean getTestBean() { - return this.testBeanFactory.getObject(); + return this.testBeanProvider.getObject(); } public TestBean getTestBean(String name) { - return this.testBeanFactory.getObject(name); + return this.testBeanProvider.getObject(name); } public TestBean getOptionalTestBean() { - return this.testBeanFactory.getIfAvailable(); + return this.testBeanProvider.getIfAvailable(); } public TestBean getOptionalTestBeanWithDefault() { - return this.testBeanFactory.getIfAvailable(() -> new TestBean("default")); + return this.testBeanProvider.getIfAvailable(() -> new TestBean("default")); } public TestBean consumeOptionalTestBean() { - this.testBeanFactory.ifAvailable(tb -> consumedTestBean = tb); + this.testBeanProvider.ifAvailable(tb -> consumedTestBean = tb); return consumedTestBean; } public TestBean getUniqueTestBean() { - return this.testBeanFactory.getIfUnique(); + return this.testBeanProvider.getIfUnique(); } public TestBean getUniqueTestBeanWithDefault() { - return this.testBeanFactory.getIfUnique(() -> new TestBean("default")); + return this.testBeanProvider.getIfUnique(() -> new TestBean("default")); } public TestBean consumeUniqueTestBean() { - this.testBeanFactory.ifUnique(tb -> consumedTestBean = tb); + this.testBeanProvider.ifUnique(tb -> consumedTestBean = tb); return consumedTestBean; } } diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/annotation/InjectAnnotationBeanPostProcessorTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/annotation/InjectAnnotationBeanPostProcessorTests.java index cc56cccb54b..8c2fa870a0e 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/annotation/InjectAnnotationBeanPostProcessorTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/annotation/InjectAnnotationBeanPostProcessorTests.java @@ -26,6 +26,8 @@ import javax.inject.Inject; import javax.inject.Named; import javax.inject.Provider; +import org.junit.After; +import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.BeanCreationException; @@ -54,12 +56,29 @@ import static org.junit.Assert.*; */ public class InjectAnnotationBeanPostProcessorTests { - @Test - public void testIncompleteBeanDefinition() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); + private DefaultListableBeanFactory bf; + + private AutowiredAnnotationBeanPostProcessor bpp; + + + @Before + public void setup() { + bf = new DefaultListableBeanFactory(); + bf.registerResolvableDependency(BeanFactory.class, bf); + bpp = new AutowiredAnnotationBeanPostProcessor(); bpp.setBeanFactory(bf); bf.addBeanPostProcessor(bpp); + bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); + } + + @After + public void close() { + bf.destroySingletons(); + } + + + @Test + public void testIncompleteBeanDefinition() { bf.registerBeanDefinition("testBean", new GenericBeanDefinition()); try { bf.getBean("testBean"); @@ -71,10 +90,6 @@ public class InjectAnnotationBeanPostProcessorTests { @Test public void testResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(ResourceInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -92,11 +107,6 @@ public class InjectAnnotationBeanPostProcessorTests { @Test public void testExtendedResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.registerResolvableDependency(BeanFactory.class, bf); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(TypedExtendedResourceInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -124,11 +134,6 @@ public class InjectAnnotationBeanPostProcessorTests { @Test public void testExtendedResourceInjectionWithOverriding() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.registerResolvableDependency(BeanFactory.class, bf); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition annotatedBd = new RootBeanDefinition(TypedExtendedResourceInjectionBean.class); TestBean tb2 = new TestBean(); annotatedBd.getPropertyValues().add("testBean2", tb2); @@ -145,16 +150,10 @@ public class InjectAnnotationBeanPostProcessorTests { assertSame(tb, bean.getTestBean4()); assertSame(ntb, bean.getNestedTestBean()); assertSame(bf, bean.getBeanFactory()); - bf.destroySingletons(); } @Test public void testExtendedResourceInjectionWithAtRequired() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.registerResolvableDependency(BeanFactory.class, bf); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.addBeanPostProcessor(new RequiredAnnotationBeanPostProcessor()); RootBeanDefinition bd = new RootBeanDefinition(TypedExtendedResourceInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); @@ -175,11 +174,6 @@ public class InjectAnnotationBeanPostProcessorTests { @Test public void testConstructorResourceInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.registerResolvableDependency(BeanFactory.class, bf); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(ConstructorResourceInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -207,10 +201,6 @@ public class InjectAnnotationBeanPostProcessorTests { @Test public void testConstructorResourceInjectionWithMultipleCandidatesAsCollection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ConstructorsCollectionResourceInjectionBean.class)); TestBean tb = new TestBean(); @@ -226,15 +216,10 @@ public class InjectAnnotationBeanPostProcessorTests { assertEquals(2, bean.getNestedTestBeans().size()); assertSame(ntb1, bean.getNestedTestBeans().get(0)); assertSame(ntb2, bean.getNestedTestBeans().get(1)); - bf.destroySingletons(); } @Test public void testConstructorResourceInjectionWithMultipleCandidatesAndFallback() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ConstructorsResourceInjectionBean.class)); TestBean tb = new TestBean(); bf.registerSingleton("testBean", tb); @@ -242,15 +227,10 @@ public class InjectAnnotationBeanPostProcessorTests { ConstructorsResourceInjectionBean bean = (ConstructorsResourceInjectionBean) bf.getBean("annotatedBean"); assertSame(tb, bean.getTestBean3()); assertNull(bean.getTestBean4()); - bf.destroySingletons(); } @Test public void testConstructorInjectionWithMap() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(MapConstructorInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -276,10 +256,6 @@ public class InjectAnnotationBeanPostProcessorTests { @Test public void testFieldInjectionWithMap() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(MapFieldInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -305,10 +281,6 @@ public class InjectAnnotationBeanPostProcessorTests { @Test public void testMethodInjectionWithMap() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition bd = new RootBeanDefinition(MapMethodInjectionBean.class); bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", bd); @@ -330,10 +302,6 @@ public class InjectAnnotationBeanPostProcessorTests { @Test public void testMethodInjectionWithMapAndMultipleMatches() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(MapMethodInjectionBean.class)); bf.registerBeanDefinition("testBean1", new RootBeanDefinition(TestBean.class)); bf.registerBeanDefinition("testBean2", new RootBeanDefinition(TestBean.class)); @@ -345,15 +313,10 @@ public class InjectAnnotationBeanPostProcessorTests { catch (BeanCreationException e) { // expected } - bf.destroySingletons(); } @Test public void testMethodInjectionWithMapAndMultipleMatchesButOnlyOneAutowireCandidate() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(MapMethodInjectionBean.class)); bf.registerBeanDefinition("testBean1", new RootBeanDefinition(TestBean.class)); RootBeanDefinition rbd2 = new RootBeanDefinition(TestBean.class); @@ -366,16 +329,10 @@ public class InjectAnnotationBeanPostProcessorTests { assertTrue(bean.getTestBeanMap().keySet().contains("testBean1")); assertTrue(bean.getTestBeanMap().values().contains(tb)); assertSame(tb, bean.getTestBean()); - bf.destroySingletons(); } @Test public void testObjectFactoryInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectFactoryQualifierFieldInjectionBean.class)); RootBeanDefinition bd = new RootBeanDefinition(TestBean.class); bd.addQualifier(new AutowireCandidateQualifier(Qualifier.class, "testBean")); @@ -384,15 +341,10 @@ public class InjectAnnotationBeanPostProcessorTests { ObjectFactoryQualifierFieldInjectionBean bean = (ObjectFactoryQualifierFieldInjectionBean) bf.getBean("annotatedBean"); assertSame(bf.getBean("testBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test public void testObjectFactoryQualifierInjection() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectFactoryQualifierFieldInjectionBean.class)); RootBeanDefinition bd = new RootBeanDefinition(TestBean.class); bd.addQualifier(new AutowireCandidateQualifier(Qualifier.class, "testBean")); @@ -400,16 +352,10 @@ public class InjectAnnotationBeanPostProcessorTests { ObjectFactoryQualifierFieldInjectionBean bean = (ObjectFactoryQualifierFieldInjectionBean) bf.getBean("annotatedBean"); assertSame(bf.getBean("testBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test public void testObjectFactoryFieldInjectionIntoPrototypeBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition annotatedBeanDefinition = new RootBeanDefinition(ObjectFactoryQualifierFieldInjectionBean.class); annotatedBeanDefinition.setScope(BeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", annotatedBeanDefinition); @@ -427,11 +373,6 @@ public class InjectAnnotationBeanPostProcessorTests { @Test public void testObjectFactoryMethodInjectionIntoPrototypeBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver()); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); RootBeanDefinition annotatedBeanDefinition = new RootBeanDefinition(ObjectFactoryQualifierMethodInjectionBean.class); annotatedBeanDefinition.setScope(BeanDefinition.SCOPE_PROTOTYPE); bf.registerBeanDefinition("annotatedBean", annotatedBeanDefinition); @@ -449,10 +390,6 @@ public class InjectAnnotationBeanPostProcessorTests { @Test public void testObjectFactoryWithBeanField() throws Exception { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectFactoryFieldInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); bf.setSerializationId("test"); @@ -461,15 +398,10 @@ public class InjectAnnotationBeanPostProcessorTests { assertSame(bf.getBean("testBean"), bean.getTestBean()); bean = (ObjectFactoryFieldInjectionBean) SerializationTestUtils.serializeAndDeserialize(bean); assertSame(bf.getBean("testBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test public void testObjectFactoryWithBeanMethod() throws Exception { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectFactoryMethodInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); bf.setSerializationId("test"); @@ -478,15 +410,10 @@ public class InjectAnnotationBeanPostProcessorTests { assertSame(bf.getBean("testBean"), bean.getTestBean()); bean = (ObjectFactoryMethodInjectionBean) SerializationTestUtils.serializeAndDeserialize(bean); assertSame(bf.getBean("testBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test public void testObjectFactoryWithTypedListField() throws Exception { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectFactoryListFieldInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); bf.setSerializationId("test"); @@ -495,15 +422,10 @@ public class InjectAnnotationBeanPostProcessorTests { assertSame(bf.getBean("testBean"), bean.getTestBean()); bean = (ObjectFactoryListFieldInjectionBean) SerializationTestUtils.serializeAndDeserialize(bean); assertSame(bf.getBean("testBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test public void testObjectFactoryWithTypedListMethod() throws Exception { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectFactoryListMethodInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); bf.setSerializationId("test"); @@ -512,15 +434,10 @@ public class InjectAnnotationBeanPostProcessorTests { assertSame(bf.getBean("testBean"), bean.getTestBean()); bean = (ObjectFactoryListMethodInjectionBean) SerializationTestUtils.serializeAndDeserialize(bean); assertSame(bf.getBean("testBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test public void testObjectFactoryWithTypedMapField() throws Exception { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectFactoryMapFieldInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); bf.setSerializationId("test"); @@ -529,15 +446,10 @@ public class InjectAnnotationBeanPostProcessorTests { assertSame(bf.getBean("testBean"), bean.getTestBean()); bean = (ObjectFactoryMapFieldInjectionBean) SerializationTestUtils.serializeAndDeserialize(bean); assertSame(bf.getBean("testBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test public void testObjectFactoryWithTypedMapMethod() throws Exception { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ObjectFactoryMapMethodInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); bf.setSerializationId("test"); @@ -546,7 +458,6 @@ public class InjectAnnotationBeanPostProcessorTests { assertSame(bf.getBean("testBean"), bean.getTestBean()); bean = (ObjectFactoryMapMethodInjectionBean) SerializationTestUtils.serializeAndDeserialize(bean); assertSame(bf.getBean("testBean"), bean.getTestBean()); - bf.destroySingletons(); } /** @@ -556,10 +467,6 @@ public class InjectAnnotationBeanPostProcessorTests { */ @Test public void testBeanAutowiredWithFactoryBean() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("factoryBeanDependentBean", new RootBeanDefinition(FactoryBeanDependentBean.class)); bf.registerSingleton("stringFactoryBean", new StringFactoryBean()); @@ -570,236 +477,152 @@ public class InjectAnnotationBeanPostProcessorTests { assertNotNull("The factoryBeanDependentBean should have been registered.", bean); assertEquals("The FactoryBeanDependentBean should have been autowired 'by type' with the StringFactoryBean.", factoryBean, bean.getFactoryBean()); - - bf.destroySingletons(); } @Test public void testNullableFieldInjectionWithBeanAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(NullableFieldInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); NullableFieldInjectionBean bean = (NullableFieldInjectionBean) bf.getBean("annotatedBean"); assertSame(bf.getBean("testBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test public void testNullableFieldInjectionWithBeanNotAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(NullableFieldInjectionBean.class)); NullableFieldInjectionBean bean = (NullableFieldInjectionBean) bf.getBean("annotatedBean"); assertNull(bean.getTestBean()); - bf.destroySingletons(); } @Test public void testNullableMethodInjectionWithBeanAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(NullableMethodInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); NullableMethodInjectionBean bean = (NullableMethodInjectionBean) bf.getBean("annotatedBean"); assertSame(bf.getBean("testBean"), bean.getTestBean()); - bf.destroySingletons(); } @Test public void testNullableMethodInjectionWithBeanNotAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(NullableMethodInjectionBean.class)); NullableMethodInjectionBean bean = (NullableMethodInjectionBean) bf.getBean("annotatedBean"); assertNull(bean.getTestBean()); - bf.destroySingletons(); } @Test public void testOptionalFieldInjectionWithBeanAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(OptionalFieldInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); OptionalFieldInjectionBean bean = (OptionalFieldInjectionBean) bf.getBean("annotatedBean"); assertTrue(bean.getTestBean().isPresent()); assertSame(bf.getBean("testBean"), bean.getTestBean().get()); - bf.destroySingletons(); } @Test public void testOptionalFieldInjectionWithBeanNotAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(OptionalFieldInjectionBean.class)); OptionalFieldInjectionBean bean = (OptionalFieldInjectionBean) bf.getBean("annotatedBean"); assertFalse(bean.getTestBean().isPresent()); - bf.destroySingletons(); } @Test public void testOptionalMethodInjectionWithBeanAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(OptionalMethodInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); OptionalMethodInjectionBean bean = (OptionalMethodInjectionBean) bf.getBean("annotatedBean"); assertTrue(bean.getTestBean().isPresent()); assertSame(bf.getBean("testBean"), bean.getTestBean().get()); - bf.destroySingletons(); } @Test public void testOptionalMethodInjectionWithBeanNotAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(OptionalMethodInjectionBean.class)); OptionalMethodInjectionBean bean = (OptionalMethodInjectionBean) bf.getBean("annotatedBean"); assertFalse(bean.getTestBean().isPresent()); - bf.destroySingletons(); } @Test public void testOptionalListFieldInjectionWithBeanAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(OptionalListFieldInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); OptionalListFieldInjectionBean bean = (OptionalListFieldInjectionBean) bf.getBean("annotatedBean"); assertTrue(bean.getTestBean().isPresent()); assertSame(bf.getBean("testBean"), bean.getTestBean().get().get(0)); - bf.destroySingletons(); } @Test public void testOptionalListFieldInjectionWithBeanNotAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(OptionalListFieldInjectionBean.class)); OptionalListFieldInjectionBean bean = (OptionalListFieldInjectionBean) bf.getBean("annotatedBean"); assertFalse(bean.getTestBean().isPresent()); - bf.destroySingletons(); } @Test public void testOptionalListMethodInjectionWithBeanAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(OptionalListMethodInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); OptionalListMethodInjectionBean bean = (OptionalListMethodInjectionBean) bf.getBean("annotatedBean"); assertTrue(bean.getTestBean().isPresent()); assertSame(bf.getBean("testBean"), bean.getTestBean().get().get(0)); - bf.destroySingletons(); } @Test public void testOptionalListMethodInjectionWithBeanNotAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(OptionalListMethodInjectionBean.class)); OptionalListMethodInjectionBean bean = (OptionalListMethodInjectionBean) bf.getBean("annotatedBean"); assertFalse(bean.getTestBean().isPresent()); - bf.destroySingletons(); } @Test public void testProviderOfOptionalFieldInjectionWithBeanAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ProviderOfOptionalFieldInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); ProviderOfOptionalFieldInjectionBean bean = (ProviderOfOptionalFieldInjectionBean) bf.getBean("annotatedBean"); assertTrue(bean.getTestBean().isPresent()); assertSame(bf.getBean("testBean"), bean.getTestBean().get()); - bf.destroySingletons(); } @Test public void testProviderOfOptionalFieldInjectionWithBeanNotAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ProviderOfOptionalFieldInjectionBean.class)); ProviderOfOptionalFieldInjectionBean bean = (ProviderOfOptionalFieldInjectionBean) bf.getBean("annotatedBean"); assertFalse(bean.getTestBean().isPresent()); - bf.destroySingletons(); } @Test public void testProviderOfOptionalMethodInjectionWithBeanAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ProviderOfOptionalMethodInjectionBean.class)); bf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class)); ProviderOfOptionalMethodInjectionBean bean = (ProviderOfOptionalMethodInjectionBean) bf.getBean("annotatedBean"); assertTrue(bean.getTestBean().isPresent()); assertSame(bf.getBean("testBean"), bean.getTestBean().get()); - bf.destroySingletons(); } @Test public void testProviderOfOptionalMethodInjectionWithBeanNotAvailable() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); - bpp.setBeanFactory(bf); - bf.addBeanPostProcessor(bpp); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(ProviderOfOptionalMethodInjectionBean.class)); ProviderOfOptionalMethodInjectionBean bean = (ProviderOfOptionalMethodInjectionBean) bf.getBean("annotatedBean"); assertFalse(bean.getTestBean().isPresent()); - bf.destroySingletons(); } @Test public void testAnnotatedDefaultConstructor() { - DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); - bf.addBeanPostProcessor(new AutowiredAnnotationBeanPostProcessor()); bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(AnnotatedDefaultConstructorBean.class)); assertNotNull(bf.getBean("annotatedBean")); diff --git a/spring-web/src/main/java/org/springframework/http/client/OkHttp3ClientHttpRequestFactory.java b/spring-web/src/main/java/org/springframework/http/client/OkHttp3ClientHttpRequestFactory.java index 59c4f7e0591..894a3f675b5 100644 --- a/spring-web/src/main/java/org/springframework/http/client/OkHttp3ClientHttpRequestFactory.java +++ b/spring-web/src/main/java/org/springframework/http/client/OkHttp3ClientHttpRequestFactory.java @@ -21,6 +21,7 @@ import java.net.MalformedURLException; import java.net.URI; import java.util.concurrent.TimeUnit; +import okhttp3.Cache; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; @@ -118,8 +119,9 @@ public class OkHttp3ClientHttpRequestFactory public void destroy() throws IOException { if (this.defaultClient) { // Clean up the client if we created it in the constructor - if (this.client.cache() != null) { - this.client.cache().close(); + Cache cache = this.client.cache(); + if (cache != null) { + cache.close(); } this.client.dispatcher().executorService().shutdown(); }