diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java
index cb53fcbc5d..11436e4ab4 100644
--- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java
+++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1422,9 +1422,15 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp
return getTypeForFactoryBean(factoryBean);
}
catch (BeanCreationException ex) {
- // Can only happen when getting a FactoryBean.
- if (logger.isWarnEnabled()) {
- logger.warn("Bean creation exception on FactoryBean type check: " + ex);
+ if (ex instanceof BeanCurrentlyInCreationException) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Bean currently in creation on FactoryBean type check: " + ex);
+ }
+ }
+ else {
+ if (logger.isWarnEnabled()) {
+ logger.warn("Bean creation exception on FactoryBean type check: " + ex);
+ }
}
onSuppressedException(ex);
return null;
diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/FactoryBeanTests-withAutowiring.xml b/spring-beans/src/test/java/org/springframework/beans/factory/FactoryBeanTests-withAutowiring.xml
index 13f328c373..0f16664044 100644
--- a/spring-beans/src/test/java/org/springframework/beans/factory/FactoryBeanTests-withAutowiring.xml
+++ b/spring-beans/src/test/java/org/springframework/beans/factory/FactoryBeanTests-withAutowiring.xml
@@ -11,7 +11,7 @@
-
+
diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/FactoryBeanTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/FactoryBeanTests.java
index 776cb3763e..c731260f65 100644
--- a/spring-beans/src/test/java/org/springframework/beans/factory/FactoryBeanTests.java
+++ b/spring-beans/src/test/java/org/springframework/beans/factory/FactoryBeanTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,7 +22,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.junit.Test;
-import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
@@ -39,7 +38,7 @@ import static org.springframework.tests.TestResourceUtils.*;
* @author Juergen Hoeller
* @author Chris Beams
*/
-public final class FactoryBeanTests {
+public class FactoryBeanTests {
private static final Class> CLASS = FactoryBeanTests.class;
private static final Resource RETURNS_NULL_CONTEXT = qualifiedResource(CLASS, "returnsNull.xml");
@@ -47,6 +46,7 @@ public final class FactoryBeanTests {
private static final Resource ABSTRACT_CONTEXT = qualifiedResource(CLASS, "abstract.xml");
private static final Resource CIRCULAR_CONTEXT = qualifiedResource(CLASS, "circular.xml");
+
@Test
public void testFactoryBeanReturnsNull() throws Exception {
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
@@ -63,10 +63,13 @@ public final class FactoryBeanTests {
BeanFactoryPostProcessor ppc = (BeanFactoryPostProcessor) factory.getBean("propertyPlaceholderConfigurer");
ppc.postProcessBeanFactory(factory);
+ assertNull(factory.getType("betaFactory"));
+
Alpha alpha = (Alpha) factory.getBean("alpha");
Beta beta = (Beta) factory.getBean("beta");
Gamma gamma = (Gamma) factory.getBean("gamma");
Gamma gamma2 = (Gamma) factory.getBean("gammaFactory");
+
assertSame(beta, alpha.getBeta());
assertSame(gamma, beta.getGamma());
assertSame(gamma2, beta.getGamma());
@@ -194,6 +197,9 @@ public final class FactoryBeanTests {
@Component
public static class BetaFactoryBean implements FactoryBean