@@ -423,6 +423,22 @@ void optionalResourceInjectionWithSingletonRemoval() {
423
423
assertThat (bean .nestedTestBeansField [1 ]).isSameAs (ntb2 );
424
424
425
425
bf .destroySingleton ("testBean" );
426
+ bf .registerSingleton ("testBeanX" , tb );
427
+
428
+ bean = bf .getBean ("annotatedBean" , OptionalResourceInjectionBean .class );
429
+ assertThat (bean .getTestBean ()).isSameAs (tb );
430
+ assertThat (bean .getTestBean2 ()).isSameAs (tb );
431
+ assertThat (bean .getTestBean3 ()).isSameAs (tb );
432
+ assertThat (bean .getTestBean4 ()).isSameAs (tb );
433
+ assertThat (bean .getIndexedTestBean ()).isSameAs (itb );
434
+ assertThat (bean .getNestedTestBeans ()).hasSize (2 );
435
+ assertThat (bean .getNestedTestBeans ()[0 ]).isSameAs (ntb1 );
436
+ assertThat (bean .getNestedTestBeans ()[1 ]).isSameAs (ntb2 );
437
+ assertThat (bean .nestedTestBeansField ).hasSize (2 );
438
+ assertThat (bean .nestedTestBeansField [0 ]).isSameAs (ntb1 );
439
+ assertThat (bean .nestedTestBeansField [1 ]).isSameAs (ntb2 );
440
+
441
+ bf .destroySingleton ("testBeanX" );
426
442
427
443
bean = bf .getBean ("annotatedBean" , OptionalResourceInjectionBean .class );
428
444
assertThat (bean .getTestBean ()).isNull ();
@@ -480,6 +496,22 @@ void optionalResourceInjectionWithBeanDefinitionRemoval() {
480
496
assertThat (bean .nestedTestBeansField [1 ]).isSameAs (ntb2 );
481
497
482
498
bf .removeBeanDefinition ("testBean" );
499
+ bf .registerBeanDefinition ("testBeanX" , new RootBeanDefinition (TestBean .class ));
500
+
501
+ bean = bf .getBean ("annotatedBean" , OptionalResourceInjectionBean .class );
502
+ assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBeanX" ));
503
+ assertThat (bean .getTestBean2 ()).isSameAs (bf .getBean ("testBeanX" ));
504
+ assertThat (bean .getTestBean3 ()).isSameAs (bf .getBean ("testBeanX" ));
505
+ assertThat (bean .getTestBean4 ()).isSameAs (bf .getBean ("testBeanX" ));
506
+ assertThat (bean .getIndexedTestBean ()).isSameAs (itb );
507
+ assertThat (bean .getNestedTestBeans ()).hasSize (2 );
508
+ assertThat (bean .getNestedTestBeans ()[0 ]).isSameAs (ntb1 );
509
+ assertThat (bean .getNestedTestBeans ()[1 ]).isSameAs (ntb2 );
510
+ assertThat (bean .nestedTestBeansField ).hasSize (2 );
511
+ assertThat (bean .nestedTestBeansField [0 ]).isSameAs (ntb1 );
512
+ assertThat (bean .nestedTestBeansField [1 ]).isSameAs (ntb2 );
513
+
514
+ bf .removeBeanDefinition ("testBeanX" );
483
515
484
516
bean = bf .getBean ("annotatedBean" , OptionalResourceInjectionBean .class );
485
517
assertThat (bean .getTestBean ()).isNull ();
@@ -768,6 +800,17 @@ void constructorResourceInjectionWithSingletonRemoval() {
768
800
assertThat (bean .getBeanFactory ()).isSameAs (bf );
769
801
770
802
bf .destroySingleton ("nestedTestBean" );
803
+ bf .registerSingleton ("nestedTestBeanX" , ntb );
804
+
805
+ bean = bf .getBean ("annotatedBean" , ConstructorResourceInjectionBean .class );
806
+ assertThat (bean .getTestBean ()).isSameAs (tb );
807
+ assertThat (bean .getTestBean2 ()).isSameAs (tb );
808
+ assertThat (bean .getTestBean3 ()).isSameAs (tb );
809
+ assertThat (bean .getTestBean4 ()).isSameAs (tb );
810
+ assertThat (bean .getNestedTestBean ()).isSameAs (ntb );
811
+ assertThat (bean .getBeanFactory ()).isSameAs (bf );
812
+
813
+ bf .destroySingleton ("nestedTestBeanX" );
771
814
772
815
bean = bf .getBean ("annotatedBean" , ConstructorResourceInjectionBean .class );
773
816
assertThat (bean .getTestBean ()).isSameAs (tb );
@@ -806,6 +849,17 @@ void constructorResourceInjectionWithBeanDefinitionRemoval() {
806
849
assertThat (bean .getBeanFactory ()).isSameAs (bf );
807
850
808
851
bf .removeBeanDefinition ("nestedTestBean" );
852
+ bf .registerBeanDefinition ("nestedTestBeanX" , new RootBeanDefinition (NestedTestBean .class ));
853
+
854
+ bean = bf .getBean ("annotatedBean" , ConstructorResourceInjectionBean .class );
855
+ assertThat (bean .getTestBean ()).isSameAs (tb );
856
+ assertThat (bean .getTestBean2 ()).isSameAs (tb );
857
+ assertThat (bean .getTestBean3 ()).isSameAs (tb );
858
+ assertThat (bean .getTestBean4 ()).isSameAs (tb );
859
+ assertThat (bean .getNestedTestBean ()).isSameAs (bf .getBean ("nestedTestBeanX" ));
860
+ assertThat (bean .getBeanFactory ()).isSameAs (bf );
861
+
862
+ bf .removeBeanDefinition ("nestedTestBeanX" );
809
863
810
864
bean = bf .getBean ("annotatedBean" , ConstructorResourceInjectionBean .class );
811
865
assertThat (bean .getTestBean ()).isSameAs (tb );
0 commit comments