2626import org .springframework .beans .factory .support .DefaultListableBeanFactory ;
2727import org .springframework .beans .factory .xml .XmlBeanDefinitionReader ;
2828import org .springframework .core .io .Resource ;
29+ import org .springframework .stereotype .Component ;
2930import org .springframework .util .Assert ;
3031
3132/**
@@ -38,6 +39,7 @@ public final class FactoryBeanTests {
3839 private static final Class <?> CLASS = FactoryBeanTests .class ;
3940 private static final Resource RETURNS_NULL_CONTEXT = qualifiedResource (CLASS , "returnsNull.xml" );
4041 private static final Resource WITH_AUTOWIRING_CONTEXT = qualifiedResource (CLASS , "withAutowiring.xml" );
42+ private static final Resource ABSTRACT_CONTEXT = qualifiedResource (CLASS , "abstract.xml" );
4143
4244 @ Test
4345 public void testFactoryBeanReturnsNull () throws Exception {
@@ -80,6 +82,20 @@ public void testFactoryBeansWithIntermediateFactoryBeanAutowiringFailure() throw
8082 assertSame (gamma , beta .getGamma ());
8183 }
8284
85+ @ Test
86+ public void testAbstractFactoryBeanViaAnnotation () throws Exception {
87+ DefaultListableBeanFactory factory = new DefaultListableBeanFactory ();
88+ new XmlBeanDefinitionReader (factory ).loadBeanDefinitions (ABSTRACT_CONTEXT );
89+ factory .getBeansWithAnnotation (Component .class );
90+ }
91+
92+ @ Test
93+ public void testAbstractFactoryBeanViaType () throws Exception {
94+ DefaultListableBeanFactory factory = new DefaultListableBeanFactory ();
95+ new XmlBeanDefinitionReader (factory ).loadBeanDefinitions (ABSTRACT_CONTEXT );
96+ factory .getBeansOfType (AbstractFactoryBean .class );
97+ }
98+
8399
84100 public static class NullReturningFactoryBean implements FactoryBean <Object > {
85101
@@ -152,6 +168,7 @@ public static class Gamma {
152168 }
153169
154170
171+ @ Component
155172 public static class BetaFactoryBean implements FactoryBean <Object > {
156173
157174 private Beta beta ;
@@ -176,4 +193,7 @@ public boolean isSingleton() {
176193 }
177194 }
178195
196+ public abstract static class AbstractFactoryBean implements FactoryBean <Object > {
197+ }
198+
179199}
0 commit comments