FactoryBean type check logs currently-in-creation exception at debug level
Issue: SPR-12900
This commit is contained in:
parent
aa49949d7a
commit
65ba72f1fc
|
@ -1451,10 +1451,16 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp
|
||||||
return getTypeForFactoryBean(factoryBean);
|
return getTypeForFactoryBean(factoryBean);
|
||||||
}
|
}
|
||||||
catch (BeanCreationException ex) {
|
catch (BeanCreationException ex) {
|
||||||
// Can only happen when getting a FactoryBean.
|
if (ex instanceof BeanCurrentlyInCreationException) {
|
||||||
|
if (logger.isDebugEnabled()) {
|
||||||
|
logger.debug("Bean currently in creation on FactoryBean type check: " + ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
if (logger.isWarnEnabled()) {
|
if (logger.isWarnEnabled()) {
|
||||||
logger.warn("Bean creation exception on FactoryBean type check: " + ex);
|
logger.warn("Bean creation exception on FactoryBean type check: " + ex);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
onSuppressedException(ex);
|
onSuppressedException(ex);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ import static org.springframework.tests.TestResourceUtils.*;
|
||||||
* @author Juergen Hoeller
|
* @author Juergen Hoeller
|
||||||
* @author Chris Beams
|
* @author Chris Beams
|
||||||
*/
|
*/
|
||||||
public final class FactoryBeanTests {
|
public class FactoryBeanTests {
|
||||||
|
|
||||||
private static final Class<?> CLASS = FactoryBeanTests.class;
|
private static final Class<?> CLASS = FactoryBeanTests.class;
|
||||||
private static final Resource RETURNS_NULL_CONTEXT = qualifiedResource(CLASS, "returnsNull.xml");
|
private static final Resource RETURNS_NULL_CONTEXT = qualifiedResource(CLASS, "returnsNull.xml");
|
||||||
|
@ -63,10 +63,13 @@ public final class FactoryBeanTests {
|
||||||
BeanFactoryPostProcessor ppc = (BeanFactoryPostProcessor) factory.getBean("propertyPlaceholderConfigurer");
|
BeanFactoryPostProcessor ppc = (BeanFactoryPostProcessor) factory.getBean("propertyPlaceholderConfigurer");
|
||||||
ppc.postProcessBeanFactory(factory);
|
ppc.postProcessBeanFactory(factory);
|
||||||
|
|
||||||
|
assertNull(factory.getType("betaFactory"));
|
||||||
|
|
||||||
Alpha alpha = (Alpha) factory.getBean("alpha");
|
Alpha alpha = (Alpha) factory.getBean("alpha");
|
||||||
Beta beta = (Beta) factory.getBean("beta");
|
Beta beta = (Beta) factory.getBean("beta");
|
||||||
Gamma gamma = (Gamma) factory.getBean("gamma");
|
Gamma gamma = (Gamma) factory.getBean("gamma");
|
||||||
Gamma gamma2 = (Gamma) factory.getBean("gammaFactory");
|
Gamma gamma2 = (Gamma) factory.getBean("gammaFactory");
|
||||||
|
|
||||||
assertSame(beta, alpha.getBeta());
|
assertSame(beta, alpha.getBeta());
|
||||||
assertSame(gamma, beta.getGamma());
|
assertSame(gamma, beta.getGamma());
|
||||||
assertSame(gamma2, beta.getGamma());
|
assertSame(gamma2, beta.getGamma());
|
||||||
|
@ -194,6 +197,9 @@ public final class FactoryBeanTests {
|
||||||
@Component
|
@Component
|
||||||
public static class BetaFactoryBean implements FactoryBean<Object> {
|
public static class BetaFactoryBean implements FactoryBean<Object> {
|
||||||
|
|
||||||
|
public BetaFactoryBean(Alpha alpha) {
|
||||||
|
}
|
||||||
|
|
||||||
private Beta beta;
|
private Beta beta;
|
||||||
|
|
||||||
public void setBeta(Beta beta) {
|
public void setBeta(Beta beta) {
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
<bean id="gamma" class="org.springframework.beans.factory.FactoryBeanTests$Gamma"/>
|
<bean id="gamma" class="org.springframework.beans.factory.FactoryBeanTests$Gamma"/>
|
||||||
|
|
||||||
<bean id="betaFactory" class="org.springframework.beans.factory.FactoryBeanTests$BetaFactoryBean">
|
<bean id="betaFactory" class="org.springframework.beans.factory.FactoryBeanTests$BetaFactoryBean" autowire="constructor">
|
||||||
<property name="beta" ref="beta"/>
|
<property name="beta" ref="beta"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue