@@ -464,8 +464,40 @@ void supportsMultipleTypesWithDefaultFactory() {
464464 lbf .registerSingleton ("fb2" , fb2 );
465465 lbf .registerSingleton ("sfb1" , sfb1 );
466466 lbf .registerSingleton ("sfb2" , sfb2 );
467-
468- testSupportsMultipleTypesWithStaticFactory (lbf );
467+ lbf .registerBeanDefinition ("recipient" ,
468+ new RootBeanDefinition (Recipient .class , RootBeanDefinition .AUTOWIRE_CONSTRUCTOR , false ));
469+
470+ Recipient recipient = lbf .getBean ("recipient" , Recipient .class );
471+ assertThat (recipient .sfb1 ).isSameAs (lbf .getBean ("sfb1" , TestBean .class ));
472+ assertThat (recipient .sfb2 ).isSameAs (lbf .getBean ("sfb2" , TestBean .class ));
473+
474+ List <ITestBean > testBeanList = recipient .testBeanList ;
475+ assertThat (testBeanList ).hasSize (5 );
476+ assertThat (testBeanList .get (0 )).isSameAs (bean );
477+ assertThat (testBeanList .get (1 )).isSameAs (fb1 .getObject ());
478+ assertThat (testBeanList .get (2 )).isInstanceOf (TestBean .class );
479+ assertThat (testBeanList .get (3 )).isSameAs (lbf .getBean ("sfb1" , TestBean .class ));
480+ assertThat (testBeanList .get (4 )).isSameAs (lbf .getBean ("sfb2" , TestBean .class ));
481+
482+ List <CharSequence > stringList = recipient .stringList ;
483+ assertThat (stringList ).hasSize (2 );
484+ assertThat (stringList .get (0 )).isSameAs (lbf .getBean ("sfb1" , String .class ));
485+ assertThat (stringList .get (1 )).isSameAs (lbf .getBean ("sfb2" , String .class ));
486+
487+ testBeanList = recipient .testBeanProvider .stream ().toList ();
488+ assertThat (testBeanList ).hasSize (5 );
489+ assertThat (testBeanList .get (0 )).isSameAs (bean );
490+ assertThat (testBeanList .get (1 )).isSameAs (fb1 .getObject ());
491+ assertThat (testBeanList .get (2 )).isInstanceOf (TestBean .class );
492+ assertThat (testBeanList .get (3 )).isSameAs (lbf .getBean ("sfb1" , TestBean .class ));
493+ assertThat (testBeanList .get (4 )).isSameAs (lbf .getBean ("sfb2" , TestBean .class ));
494+
495+ stringList = recipient .stringProvider .stream ().toList ();
496+ assertThat (stringList ).hasSize (2 );
497+ assertThat (stringList .get (0 )).isSameAs (lbf .getBean ("sfb1" , String .class ));
498+ assertThat (stringList .get (1 )).isSameAs (lbf .getBean ("sfb2" , String .class ));
499+
500+ testSupportsMultipleTypes (lbf );
469501 }
470502
471503 @ Test
@@ -483,22 +515,35 @@ void supportsMultipleTypesWithStaticFactory() {
483515 lbf .addBean ("sfb1" , sfb1 );
484516 lbf .addBean ("sfb2" , sfb2 );
485517
486- testSupportsMultipleTypesWithStaticFactory (lbf );
518+ testSupportsMultipleTypes (lbf );
487519 }
488520
489- void testSupportsMultipleTypesWithStaticFactory (ListableBeanFactory lbf ) {
521+ void testSupportsMultipleTypes (ListableBeanFactory lbf ) {
522+ List <ITestBean > testBeanList = lbf .getBeanProvider (ITestBean .class ).stream ().toList ();
523+ assertThat (testBeanList ).hasSize (5 );
524+ assertThat (testBeanList .get (0 )).isSameAs (lbf .getBean ("bean" , TestBean .class ));
525+ assertThat (testBeanList .get (1 )).isSameAs (lbf .getBean ("fb1" , TestBean .class ));
526+ assertThat (testBeanList .get (2 )).isInstanceOf (TestBean .class );
527+ assertThat (testBeanList .get (3 )).isSameAs (lbf .getBean ("sfb1" , TestBean .class ));
528+ assertThat (testBeanList .get (4 )).isSameAs (lbf .getBean ("sfb2" , TestBean .class ));
529+
530+ List <CharSequence > stringList = lbf .getBeanProvider (CharSequence .class ).stream ().toList ();
531+ assertThat (stringList ).hasSize (2 );
532+ assertThat (stringList .get (0 )).isSameAs (lbf .getBean ("sfb1" , String .class ));
533+ assertThat (stringList .get (1 )).isSameAs (lbf .getBean ("sfb2" , String .class ));
534+
490535 Map <String , ?> beans = BeanFactoryUtils .beansOfTypeIncludingAncestors (lbf , ITestBean .class );
491536 assertThat (beans ).hasSize (5 );
492537 assertThat (beans .get ("bean" )).isSameAs (lbf .getBean ("bean" ));
493- assertThat (beans .get ("fb1" )).isSameAs (lbf .getBean ("& fb1" , DummyFactory .class ). getObject ( ));
538+ assertThat (beans .get ("fb1" )).isSameAs (lbf .getBean ("fb1" ,TestBean .class ));
494539 assertThat (beans .get ("fb2" )).isInstanceOf (TestBean .class );
495- assertThat (beans .get ("sfb1" )).isInstanceOf ( TestBean .class );
496- assertThat (beans .get ("sfb2" )).isInstanceOf ( TestBean .class );
540+ assertThat (beans .get ("sfb1" )).isSameAs ( lbf . getBean ( "sfb1" , TestBean .class ) );
541+ assertThat (beans .get ("sfb2" )).isSameAs ( lbf . getBean ( "sfb2" , TestBean .class ) );
497542
498543 beans = BeanFactoryUtils .beansOfTypeIncludingAncestors (lbf , CharSequence .class );
499544 assertThat (beans ).hasSize (2 );
500- assertThat (beans .get ("sfb1" )).isInstanceOf ( String .class );
501- assertThat (beans .get ("sfb2" )).isInstanceOf ( String .class );
545+ assertThat (beans .get ("sfb1" )).isSameAs ( lbf . getBean ( "sfb1" , String .class ) );
546+ assertThat (beans .get ("sfb2" )).isSameAs ( lbf . getBean ( "sfb1" , String .class ) );
502547
503548 assertThat (lbf .getBean ("sfb1" , ITestBean .class )).isInstanceOf (TestBean .class );
504549 assertThat (lbf .getBean ("sfb2" , ITestBean .class )).isInstanceOf (TestBean .class );
@@ -604,4 +649,30 @@ public boolean supportsType(Class<?> type) {
604649 }
605650 }
606651
652+
653+ static class Recipient {
654+
655+ public Recipient (ITestBean sfb1 , ITestBean sfb2 , List <ITestBean > testBeanList , List <CharSequence > stringList ,
656+ ObjectProvider <ITestBean > testBeanProvider , ObjectProvider <CharSequence > stringProvider ) {
657+ this .sfb1 = sfb1 ;
658+ this .sfb2 = sfb2 ;
659+ this .testBeanList = testBeanList ;
660+ this .stringList = stringList ;
661+ this .testBeanProvider = testBeanProvider ;
662+ this .stringProvider = stringProvider ;
663+ }
664+
665+ ITestBean sfb1 ;
666+
667+ ITestBean sfb2 ;
668+
669+ List <ITestBean > testBeanList ;
670+
671+ List <CharSequence > stringList ;
672+
673+ ObjectProvider <ITestBean > testBeanProvider ;
674+
675+ ObjectProvider <CharSequence > stringProvider ;
676+ }
677+
607678}
0 commit comments