spring中bean实例化前获取BeanDefinition信息
getMergedLocalBeanDefinition完成功能
spring中bean实例化前,会先获取BeanDefinition完整信息,即当前bean及其父类的BeanDefinition信息。
源码
// AbstractBeanFactory 类中的 1338~1345行
// 1、1340行:从缓存中获取 已获取过的 BeanDefinition信息。接2
RootBeanDefinition mbd = this.mergedBeanDefinitions.get(beanName);
// 2、1341行:如果缓存中存在 且 当前BeanDefinition中的stale<是否重新获取BeanDefinition信息>属性是false,返回缓存信息。如果缓存中不存在或BeanDefinition需要重新获取,接3
if (mbd != null && !mbd.stale) {
return mbd;
}
// 3、1343行:调用重载方法,返回BeanDefinition信息,接4
return getMergedBeanDefinition(beanName, getBeanDefinition