Skip to content

Commit 65ba72f

Browse files
committed
FactoryBean type check logs currently-in-creation exception at debug level
Issue: SPR-12900
1 parent aa49949 commit 65ba72f

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java

+9-3
Original file line numberDiff line numberDiff line change
@@ -1451,9 +1451,15 @@ protected Class<?> getTypeForFactoryBean(String beanName, RootBeanDefinition mbd
14511451
return getTypeForFactoryBean(factoryBean);
14521452
}
14531453
catch (BeanCreationException ex) {
1454-
// Can only happen when getting a FactoryBean.
1455-
if (logger.isWarnEnabled()) {
1456-
logger.warn("Bean creation exception on FactoryBean type check: " + ex);
1454+
if (ex instanceof BeanCurrentlyInCreationException) {
1455+
if (logger.isDebugEnabled()) {
1456+
logger.debug("Bean currently in creation on FactoryBean type check: " + ex);
1457+
}
1458+
}
1459+
else {
1460+
if (logger.isWarnEnabled()) {
1461+
logger.warn("Bean creation exception on FactoryBean type check: " + ex);
1462+
}
14571463
}
14581464
onSuppressedException(ex);
14591465
return null;

spring-beans/src/test/java/org/springframework/beans/factory/FactoryBeanTests.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
* @author Juergen Hoeller
3939
* @author Chris Beams
4040
*/
41-
public final class FactoryBeanTests {
41+
public class FactoryBeanTests {
4242

4343
private static final Class<?> CLASS = FactoryBeanTests.class;
4444
private static final Resource RETURNS_NULL_CONTEXT = qualifiedResource(CLASS, "returnsNull.xml");
@@ -63,10 +63,13 @@ public void testFactoryBeansWithAutowiring() throws Exception {
6363
BeanFactoryPostProcessor ppc = (BeanFactoryPostProcessor) factory.getBean("propertyPlaceholderConfigurer");
6464
ppc.postProcessBeanFactory(factory);
6565

66+
assertNull(factory.getType("betaFactory"));
67+
6668
Alpha alpha = (Alpha) factory.getBean("alpha");
6769
Beta beta = (Beta) factory.getBean("beta");
6870
Gamma gamma = (Gamma) factory.getBean("gamma");
6971
Gamma gamma2 = (Gamma) factory.getBean("gammaFactory");
72+
7073
assertSame(beta, alpha.getBeta());
7174
assertSame(gamma, beta.getGamma());
7275
assertSame(gamma2, beta.getGamma());
@@ -194,6 +197,9 @@ public static class Gamma {
194197
@Component
195198
public static class BetaFactoryBean implements FactoryBean<Object> {
196199

200+
public BetaFactoryBean(Alpha alpha) {
201+
}
202+
197203
private Beta beta;
198204

199205
public void setBeta(Beta beta) {

spring-beans/src/test/resources/org/springframework/beans/factory/FactoryBeanTests-withAutowiring.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<bean id="gamma" class="org.springframework.beans.factory.FactoryBeanTests$Gamma"/>
1313

14-
<bean id="betaFactory" class="org.springframework.beans.factory.FactoryBeanTests$BetaFactoryBean">
14+
<bean id="betaFactory" class="org.springframework.beans.factory.FactoryBeanTests$BetaFactoryBean" autowire="constructor">
1515
<property name="beta" ref="beta"/>
1616
</bean>
1717

0 commit comments

Comments
 (0)