BeanDefinition合并流程
2023-02-17 16:24:46 0 举报
BeanDefinition合并源码流程
作者其他创作
大纲/内容
getBeanDefinition(beanName):从beanDefinitionMap中取出beanName对应的BeanDefinition
从mergedBeanDefinitions中获取beanName对应的BeanDefinition,如果有,则直接返回
font color=\"#323232\
synchronized (this.mergedBeanDefinitions)
mbd = this.mergedBeanDefinitions.get(beanName)
mbd值为null
org.springframework.beans.factory.support.AbstractBeanFactory#getMergedLocalBeanDefinition
如果当前BeanDefinition的parentName属性值为null,则将当前的BeanDefinition封装成一个RootBeanDefinition,赋值给mbd变量
如果当前BeanDefinition的parentName属性值不为null,则递归查找已经合并好的父BeanDefinition。(递归的终止条件是,当前BeanDefinition的parentName属性值为null)。查找终止后,开始从顶层的BeanDefinition,一层一层向下合并,最后得到一个合并好的BeanDefinition。
beanName: Bean的名称bd: 根据beanName从beanDefinitionMap中取出的BeanDefinition
将合并好的BeanDefinition放入到mergedBeanDefinitions中
加锁
getMergedLocalBeanDefinition(beanName)
0 条评论
下一页