Spring: BeanDefinition的注册(源码跟进)

2021-03-02 07:28

阅读:754

随后我们跟进registerBeanDefinition方法。方法中首先会进行校验,然后会从容器中获取BeanDefinition实例,看看是否存在。

 

如果实例已经注册过了便会根据容器的配置来决定是否是否支持覆盖原先的实例,随后对权限等等进行校验,如果最后都通过了则最终更新beanDefinitionMap

 

如果实例没有注册过,则进入else代码块中:首先判断容器是否已经开始创建Bean实例,随后用synchronized锁住beanDefinitionMap,此时Map中已经存有Bean实例了,在此对它进行新增添加,后更新注册表中的beanDefinitionNams(将新增的和原先的添加进去)。最后removeManualSingletonName(beanName)再对已经注册的单例Bean名字列表进行更新。

 

在removeManualSingletonName()方法中只调用了方法updateManualSingletonNames


评论


亲,登录后才可以留言!