@@ -370,8 +370,25 @@ void testObjectFactoryWithBeanField() throws Exception {
370370
371371 ObjectFactoryFieldInjectionBean bean = (ObjectFactoryFieldInjectionBean ) bf .getBean ("annotatedBean" );
372372 assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
373+ assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
374+ bean = SerializationTestUtils .serializeAndDeserialize (bean );
375+ assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
376+ assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
377+ }
378+
379+ @ Test
380+ void testObjectFactoryWithBeanFieldAgainstFrozen () throws Exception {
381+ bf .registerBeanDefinition ("annotatedBean" , new RootBeanDefinition (ObjectFactoryFieldInjectionBean .class ));
382+ bf .registerBeanDefinition ("testBean" , new RootBeanDefinition (TestBean .class ));
383+ bf .setSerializationId ("test" );
384+ bf .freezeConfiguration ();
385+
386+ ObjectFactoryFieldInjectionBean bean = (ObjectFactoryFieldInjectionBean ) bf .getBean ("annotatedBean" );
387+ assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
388+ assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
373389 bean = SerializationTestUtils .serializeAndDeserialize (bean );
374390 assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
391+ assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
375392 }
376393
377394 @ Test
@@ -382,8 +399,25 @@ void testObjectFactoryWithBeanMethod() throws Exception {
382399
383400 ObjectFactoryMethodInjectionBean bean = (ObjectFactoryMethodInjectionBean ) bf .getBean ("annotatedBean" );
384401 assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
402+ assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
385403 bean = SerializationTestUtils .serializeAndDeserialize (bean );
386404 assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
405+ assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
406+ }
407+
408+ @ Test
409+ void testObjectFactoryWithBeanMethodAgainstFrozen () throws Exception {
410+ bf .registerBeanDefinition ("annotatedBean" , new RootBeanDefinition (ObjectFactoryMethodInjectionBean .class ));
411+ bf .registerBeanDefinition ("testBean" , new RootBeanDefinition (TestBean .class ));
412+ bf .setSerializationId ("test" );
413+ bf .freezeConfiguration ();
414+
415+ ObjectFactoryMethodInjectionBean bean = (ObjectFactoryMethodInjectionBean ) bf .getBean ("annotatedBean" );
416+ assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
417+ assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
418+ bean = SerializationTestUtils .serializeAndDeserialize (bean );
419+ assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
420+ assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
387421 }
388422
389423 @ Test
@@ -444,8 +478,8 @@ void testBeanAutowiredWithFactoryBean() {
444478 bf .registerBeanDefinition ("factoryBeanDependentBean" , new RootBeanDefinition (FactoryBeanDependentBean .class ));
445479 bf .registerSingleton ("stringFactoryBean" , new StringFactoryBean ());
446480
447- final StringFactoryBean factoryBean = (StringFactoryBean ) bf .getBean ("&stringFactoryBean" );
448- final FactoryBeanDependentBean bean = (FactoryBeanDependentBean ) bf .getBean ("factoryBeanDependentBean" );
481+ StringFactoryBean factoryBean = (StringFactoryBean ) bf .getBean ("&stringFactoryBean" );
482+ FactoryBeanDependentBean bean = (FactoryBeanDependentBean ) bf .getBean ("factoryBeanDependentBean" );
449483
450484 assertThat (factoryBean ).as ("The singleton StringFactoryBean should have been registered." ).isNotNull ();
451485 assertThat (bean ).as ("The factoryBeanDependentBean should have been registered." ).isNotNull ();
@@ -459,6 +493,7 @@ void testNullableFieldInjectionWithBeanAvailable() {
459493
460494 NullableFieldInjectionBean bean = (NullableFieldInjectionBean ) bf .getBean ("annotatedBean" );
461495 assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
496+ assertThat (bf .getDependentBeans ("testBean" )).contains ("annotatedBean" );
462497 }
463498
464499 @ Test
@@ -476,6 +511,7 @@ void testNullableMethodInjectionWithBeanAvailable() {
476511
477512 NullableMethodInjectionBean bean = (NullableMethodInjectionBean ) bf .getBean ("annotatedBean" );
478513 assertThat (bean .getTestBean ()).isSameAs (bf .getBean ("testBean" ));
514+ assertThat (bf .getDependentBeans ("testBean" )).contains ("annotatedBean" );
479515 }
480516
481517 @ Test
@@ -494,6 +530,7 @@ void testOptionalFieldInjectionWithBeanAvailable() {
494530 OptionalFieldInjectionBean bean = (OptionalFieldInjectionBean ) bf .getBean ("annotatedBean" );
495531 assertThat (bean .getTestBean ()).isPresent ();
496532 assertThat (bean .getTestBean ().get ()).isSameAs (bf .getBean ("testBean" ));
533+ assertThat (bf .getDependentBeans ("testBean" )).contains ("annotatedBean" );
497534 }
498535
499536 @ Test
@@ -512,6 +549,7 @@ void testOptionalMethodInjectionWithBeanAvailable() {
512549 OptionalMethodInjectionBean bean = (OptionalMethodInjectionBean ) bf .getBean ("annotatedBean" );
513550 assertThat (bean .getTestBean ()).isPresent ();
514551 assertThat (bean .getTestBean ().get ()).isSameAs (bf .getBean ("testBean" ));
552+ assertThat (bf .getDependentBeans ("testBean" )).contains ("annotatedBean" );
515553 }
516554
517555 @ Test
@@ -530,6 +568,7 @@ void testOptionalListFieldInjectionWithBeanAvailable() {
530568 OptionalListFieldInjectionBean bean = (OptionalListFieldInjectionBean ) bf .getBean ("annotatedBean" );
531569 assertThat (bean .getTestBean ()).hasValueSatisfying (list ->
532570 assertThat (list ).containsExactly (bf .getBean ("testBean" , TestBean .class )));
571+ assertThat (bf .getDependentBeans ("testBean" )).contains ("annotatedBean" );
533572 }
534573
535574 @ Test
@@ -548,6 +587,7 @@ void testOptionalListMethodInjectionWithBeanAvailable() {
548587 OptionalListMethodInjectionBean bean = (OptionalListMethodInjectionBean ) bf .getBean ("annotatedBean" );
549588 assertThat (bean .getTestBean ()).hasValueSatisfying (list ->
550589 assertThat (list ).containsExactly (bf .getBean ("testBean" , TestBean .class )));
590+ assertThat (bf .getDependentBeans ("testBean" )).contains ("annotatedBean" );
551591 }
552592
553593 @ Test
@@ -566,6 +606,7 @@ void testProviderOfOptionalFieldInjectionWithBeanAvailable() {
566606 ProviderOfOptionalFieldInjectionBean bean = (ProviderOfOptionalFieldInjectionBean ) bf .getBean ("annotatedBean" );
567607 assertThat (bean .getTestBean ()).isPresent ();
568608 assertThat (bean .getTestBean ().get ()).isSameAs (bf .getBean ("testBean" ));
609+ assertThat (bf .getDependentBeans ("testBean" )).doesNotContain ("annotatedBean" );
569610 }
570611
571612 @ Test
@@ -584,6 +625,7 @@ void testProviderOfOptionalMethodInjectionWithBeanAvailable() {
584625 ProviderOfOptionalMethodInjectionBean bean = (ProviderOfOptionalMethodInjectionBean ) bf .getBean ("annotatedBean" );
585626 assertThat (bean .getTestBean ()).isPresent ();
586627 assertThat (bean .getTestBean ().get ()).isSameAs (bf .getBean ("testBean" ));
628+ assertThat (bf .getDependentBeans ("testBean" )).doesNotContain ("annotatedBean" );
587629 }
588630
589631 @ Test
@@ -788,7 +830,6 @@ public static class ConstructorResourceInjectionBean extends ResourceInjectionBe
788830
789831 private ConfigurableListableBeanFactory beanFactory ;
790832
791-
792833 public ConstructorResourceInjectionBean () {
793834 throw new UnsupportedOperationException ();
794835 }
0 commit comments