@@ -630,6 +630,62 @@ public void testOptionalMethodInjectionWithBeanNotAvailable() {
630630 bf .destroySingletons ();
631631 }
632632
633+ @ Test
634+ public void testOptionalListFieldInjectionWithBeanAvailable () {
635+ DefaultListableBeanFactory bf = new DefaultListableBeanFactory ();
636+ AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor ();
637+ bpp .setBeanFactory (bf );
638+ bf .addBeanPostProcessor (bpp );
639+ bf .registerBeanDefinition ("annotatedBean" , new RootBeanDefinition (OptionalListFieldInjectionBean .class ));
640+ bf .registerBeanDefinition ("testBean" , new RootBeanDefinition (TestBean .class ));
641+
642+ OptionalListFieldInjectionBean bean = (OptionalListFieldInjectionBean ) bf .getBean ("annotatedBean" );
643+ assertTrue (bean .getTestBean ().isPresent ());
644+ assertSame (bf .getBean ("testBean" ), bean .getTestBean ().get ().get (0 ));
645+ bf .destroySingletons ();
646+ }
647+
648+ @ Test
649+ public void testOptionalListFieldInjectionWithBeanNotAvailable () {
650+ DefaultListableBeanFactory bf = new DefaultListableBeanFactory ();
651+ AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor ();
652+ bpp .setBeanFactory (bf );
653+ bf .addBeanPostProcessor (bpp );
654+ bf .registerBeanDefinition ("annotatedBean" , new RootBeanDefinition (OptionalListFieldInjectionBean .class ));
655+
656+ OptionalListFieldInjectionBean bean = (OptionalListFieldInjectionBean ) bf .getBean ("annotatedBean" );
657+ assertFalse (bean .getTestBean ().isPresent ());
658+ bf .destroySingletons ();
659+ }
660+
661+ @ Test
662+ public void testOptionalListMethodInjectionWithBeanAvailable () {
663+ DefaultListableBeanFactory bf = new DefaultListableBeanFactory ();
664+ AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor ();
665+ bpp .setBeanFactory (bf );
666+ bf .addBeanPostProcessor (bpp );
667+ bf .registerBeanDefinition ("annotatedBean" , new RootBeanDefinition (OptionalListMethodInjectionBean .class ));
668+ bf .registerBeanDefinition ("testBean" , new RootBeanDefinition (TestBean .class ));
669+
670+ OptionalListMethodInjectionBean bean = (OptionalListMethodInjectionBean ) bf .getBean ("annotatedBean" );
671+ assertTrue (bean .getTestBean ().isPresent ());
672+ assertSame (bf .getBean ("testBean" ), bean .getTestBean ().get ().get (0 ));
673+ bf .destroySingletons ();
674+ }
675+
676+ @ Test
677+ public void testOptionalListMethodInjectionWithBeanNotAvailable () {
678+ DefaultListableBeanFactory bf = new DefaultListableBeanFactory ();
679+ AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor ();
680+ bpp .setBeanFactory (bf );
681+ bf .addBeanPostProcessor (bpp );
682+ bf .registerBeanDefinition ("annotatedBean" , new RootBeanDefinition (OptionalListMethodInjectionBean .class ));
683+
684+ OptionalListMethodInjectionBean bean = (OptionalListMethodInjectionBean ) bf .getBean ("annotatedBean" );
685+ assertFalse (bean .getTestBean ().isPresent ());
686+ bf .destroySingletons ();
687+ }
688+
633689 @ Test
634690 public void testProviderOfOptionalFieldInjectionWithBeanAvailable () {
635691 DefaultListableBeanFactory bf = new DefaultListableBeanFactory ();
@@ -1239,6 +1295,32 @@ public Optional<TestBean> getTestBean() {
12391295 }
12401296
12411297
1298+ public static class OptionalListFieldInjectionBean {
1299+
1300+ @ Inject
1301+ private Optional <List <TestBean >> testBean ;
1302+
1303+ public Optional <List <TestBean >> getTestBean () {
1304+ return this .testBean ;
1305+ }
1306+ }
1307+
1308+
1309+ public static class OptionalListMethodInjectionBean {
1310+
1311+ private Optional <List <TestBean >> testBean ;
1312+
1313+ @ Inject
1314+ public void setTestBean (Optional <List <TestBean >> testBeanFactory ) {
1315+ this .testBean = testBeanFactory ;
1316+ }
1317+
1318+ public Optional <List <TestBean >> getTestBean () {
1319+ return this .testBean ;
1320+ }
1321+ }
1322+
1323+
12421324 public static class ProviderOfOptionalFieldInjectionBean {
12431325
12441326 @ Inject
0 commit comments