@@ -464,8 +464,40 @@ void supportsMultipleTypesWithDefaultFactory() {
464
464
lbf .registerSingleton ("fb2" , fb2 );
465
465
lbf .registerSingleton ("sfb1" , sfb1 );
466
466
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 );
469
501
}
470
502
471
503
@ Test
@@ -483,22 +515,35 @@ void supportsMultipleTypesWithStaticFactory() {
483
515
lbf .addBean ("sfb1" , sfb1 );
484
516
lbf .addBean ("sfb2" , sfb2 );
485
517
486
- testSupportsMultipleTypesWithStaticFactory (lbf );
518
+ testSupportsMultipleTypes (lbf );
487
519
}
488
520
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
+
490
535
Map <String , ?> beans = BeanFactoryUtils .beansOfTypeIncludingAncestors (lbf , ITestBean .class );
491
536
assertThat (beans ).hasSize (5 );
492
537
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 ));
494
539
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 ) );
497
542
498
543
beans = BeanFactoryUtils .beansOfTypeIncludingAncestors (lbf , CharSequence .class );
499
544
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 ) );
502
547
503
548
assertThat (lbf .getBean ("sfb1" , ITestBean .class )).isInstanceOf (TestBean .class );
504
549
assertThat (lbf .getBean ("sfb2" , ITestBean .class )).isInstanceOf (TestBean .class );
@@ -604,4 +649,30 @@ public boolean supportsType(Class<?> type) {
604
649
}
605
650
}
606
651
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
+
607
678
}
0 commit comments