一次性讲清楚spring中bean的生命周期之二:FactoryBean的前世今生

// caller actually wants a reference to the factory.

//beanInstance不是FactoryBean的实例或name以&开头

if (!(beanInstance instanceof FactoryBean) || BeanFactoryUtils.isFactoryDereference(name)) {

return beanInstance;

}

Object object = null;

//mbd即beanDefinition为空,从缓存中取

if (mbd == null) {

object = getCachedObjectForFactoryBean(beanName);

}

//缓存中没有,则调用FactoryBean的getObject方法,返回其对象

if (object == null) {

// Return bean instance from factory.

FactoryBean<?> factory = (FactoryBean<?>) beanInstance;

// Caches object obtained from FactoryBean if it is a singleton.

if (mbd == null && containsBeanDefinition(beanName)) {

mbd = getMergedLocalBeanDefinition(beanName);

}

boolean synthetic = (mbd != null && mbd.isSynthetic());

object = getObjectFromFactoryBean(factory, beanName, !synthetic);

}

return object;

}

复制代码

看该方法上的注释,

Get the object for the given bean instance, either the bean instance itself or its created

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值