@@ -681,6 +681,29 @@ public void testConstructorResourceInjectionWithNoCandidatesAndNoFallback() {
681
681
}
682
682
}
683
683
684
+ @ Test
685
+ public void testConstructorResourceInjectionWithCollectionAndNullFromFactoryBean () {
686
+ DefaultListableBeanFactory bf = new DefaultListableBeanFactory ();
687
+ AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor ();
688
+ bpp .setBeanFactory (bf );
689
+ bf .addBeanPostProcessor (bpp );
690
+ bf .registerBeanDefinition ("annotatedBean" , new RootBeanDefinition (
691
+ ConstructorsCollectionResourceInjectionBean .class ));
692
+ TestBean tb = new TestBean ();
693
+ bf .registerSingleton ("testBean" , tb );
694
+ bf .registerBeanDefinition ("nestedTestBean1" , new RootBeanDefinition (NullNestedTestBeanFactoryBean .class ));
695
+ NestedTestBean ntb2 = new NestedTestBean ();
696
+ bf .registerSingleton ("nestedTestBean2" , ntb2 );
697
+
698
+ ConstructorsCollectionResourceInjectionBean bean = (ConstructorsCollectionResourceInjectionBean ) bf .getBean ("annotatedBean" );
699
+ assertNull (bean .getTestBean3 ());
700
+ assertSame (tb , bean .getTestBean4 ());
701
+ assertEquals (2 , bean .getNestedTestBeans ().size ());
702
+ assertNull (bean .getNestedTestBeans ().get (0 ));
703
+ assertSame (ntb2 , bean .getNestedTestBeans ().get (1 ));
704
+ bf .destroySingletons ();
705
+ }
706
+
684
707
@ Test
685
708
public void testConstructorResourceInjectionWithMultipleCandidatesAsCollection () {
686
709
DefaultListableBeanFactory bf = new DefaultListableBeanFactory ();
@@ -860,23 +883,20 @@ public void testConstructorInjectionWithMap() {
860
883
bd .setScope (RootBeanDefinition .SCOPE_PROTOTYPE );
861
884
bf .registerBeanDefinition ("annotatedBean" , bd );
862
885
TestBean tb1 = new TestBean ("tb1" );
863
- TestBean tb2 = new TestBean ("tb2" );
864
886
bf .registerSingleton ("testBean1" , tb1 );
865
- bf .registerSingleton ("testBean2" , tb2 );
887
+ RootBeanDefinition tb2 = new RootBeanDefinition (NullFactoryMethods .class );
888
+ tb2 .setFactoryMethodName ("createTestBean" );
889
+ bf .registerBeanDefinition ("testBean2" , tb2 );
866
890
867
891
MapConstructorInjectionBean bean = (MapConstructorInjectionBean ) bf .getBean ("annotatedBean" );
868
892
assertEquals (2 , bean .getTestBeanMap ().size ());
869
- assertTrue (bean .getTestBeanMap ().keySet ().contains ("testBean1" ));
870
- assertTrue (bean .getTestBeanMap ().keySet ().contains ("testBean2" ));
871
- assertTrue (bean .getTestBeanMap ().values ().contains (tb1 ));
872
- assertTrue (bean .getTestBeanMap ().values ().contains (tb2 ));
893
+ assertSame (tb1 , bean .getTestBeanMap ().get ("testBean1" ));
894
+ assertNull (bean .getTestBeanMap ().get ("testBean2" ));
873
895
874
896
bean = (MapConstructorInjectionBean ) bf .getBean ("annotatedBean" );
875
897
assertEquals (2 , bean .getTestBeanMap ().size ());
876
- assertTrue (bean .getTestBeanMap ().keySet ().contains ("testBean1" ));
877
- assertTrue (bean .getTestBeanMap ().keySet ().contains ("testBean2" ));
878
- assertTrue (bean .getTestBeanMap ().values ().contains (tb1 ));
879
- assertTrue (bean .getTestBeanMap ().values ().contains (tb2 ));
898
+ assertSame (tb1 , bean .getTestBeanMap ().get ("testBean1" ));
899
+ assertNull (bean .getTestBeanMap ().get ("testBean2" ));
880
900
}
881
901
882
902
@ Test
0 commit comments