@@ -1727,6 +1727,40 @@ void objectProviderInjectionWithTargetPrimary() {
17271727 tb2 .setFactoryMethodName ("newTestBean2" );
17281728 tb2 .setLazyInit (true );
17291729 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 );
17301764
17311765 ObjectProviderInjectionBean bean = bf .getBean ("annotatedBean" , ObjectProviderInjectionBean .class );
17321766 TestBean testBean1 = bf .getBean ("testBean1" , TestBean .class );
0 commit comments