@@ -1727,6 +1727,40 @@ void objectProviderInjectionWithTargetPrimary() {
1727
1727
tb2 .setFactoryMethodName ("newTestBean2" );
1728
1728
tb2 .setLazyInit (true );
1729
1729
bf .registerBeanDefinition ("testBean2" , tb2 );
1730
+ bf .registerAlias ("testBean2" , "testBean" );
1731
+
1732
+ ObjectProviderInjectionBean bean = bf .getBean ("annotatedBean" , ObjectProviderInjectionBean .class );
1733
+ TestBean testBean1 = bf .getBean ("testBean1" , TestBean .class );
1734
+ assertThat (bean .getTestBean ()).isSameAs (testBean1 );
1735
+ assertThat (bean .getOptionalTestBean ()).isSameAs (testBean1 );
1736
+ assertThat (bean .consumeOptionalTestBean ()).isSameAs (testBean1 );
1737
+ assertThat (bean .getUniqueTestBean ()).isSameAs (testBean1 );
1738
+ assertThat (bean .consumeUniqueTestBean ()).isSameAs (testBean1 );
1739
+ assertThat (bf .containsSingleton ("testBean2" )).isFalse ();
1740
+
1741
+ TestBean testBean2 = bf .getBean ("testBean2" , TestBean .class );
1742
+ assertThat (bean .iterateTestBeans ()).containsExactly (testBean1 , testBean2 );
1743
+ assertThat (bean .forEachTestBeans ()).containsExactly (testBean1 , testBean2 );
1744
+ assertThat (bean .streamTestBeans ()).containsExactly (testBean1 , testBean2 );
1745
+ assertThat (bean .streamTestBeansInOrder ()).containsExactly (testBean2 , testBean1 );
1746
+ assertThat (bean .allTestBeans ()).containsExactly (testBean1 , testBean2 );
1747
+ assertThat (bean .allTestBeansInOrder ()).containsExactly (testBean2 , testBean1 );
1748
+ assertThat (bean .allSingletonBeans ()).containsExactly (testBean1 , testBean2 );
1749
+ assertThat (bean .allSingletonBeansInOrder ()).containsExactly (testBean2 , testBean1 );
1750
+ }
1751
+
1752
+ @ Test
1753
+ void objectProviderInjectionWithLateMarkedTargetPrimary () {
1754
+ bf .registerBeanDefinition ("annotatedBean" , new RootBeanDefinition (ObjectProviderInjectionBean .class ));
1755
+ RootBeanDefinition tb1 = new RootBeanDefinition (TestBeanFactory .class );
1756
+ tb1 .setFactoryMethodName ("newTestBean1" );
1757
+ bf .registerBeanDefinition ("testBean1" , tb1 );
1758
+ RootBeanDefinition tb2 = new RootBeanDefinition (TestBeanFactory .class );
1759
+ tb2 .setFactoryMethodName ("newTestBean2" );
1760
+ tb2 .setLazyInit (true );
1761
+ bf .registerBeanDefinition ("testBean2" , tb2 );
1762
+ bf .registerAlias ("testBean2" , "testBean" );
1763
+ tb1 .setPrimary (true );
1730
1764
1731
1765
ObjectProviderInjectionBean bean = bf .getBean ("annotatedBean" , ObjectProviderInjectionBean .class );
1732
1766
TestBean testBean1 = bf .getBean ("testBean1" , TestBean .class );
0 commit comments