springboot-BeanDefinitionRegistry接口

BeanDefinitionRegistry接口:

用于注册BeanDefinition到容器中的接口类

 

实现类众多

抽象类:AbstractBeanDefinition

SpringBoot默认使用的实现类是:DefaultListableBeanFactory

 

主要接口方法:

1.registerBeanDefinition(注册BeanDefinition)

2.removeBeanDefinition(反注册BeanDefinition)

3.getBeanDefinition(从已注册列表中获取BeanDefinition)

4.containsBeanDefinition(查看注册列表中是否包含当前BeanDefinition)

 

我们用到最多的是registerBeanDefinition方法,这里就DefaultListableBeanFactory来详细分析下:

执行步骤如下:

1.首先校验beanName和BeanDefinition是否为空

2.如果instanceof AbstractBeanDefinition,则调用父类validate

3.从注册表中根据beanName获取已经注册的BeanDefinition,与目标BeanDefinition对比,如果不能覆写,则返回BeanDefinitionStoreException

4.如果注册表中还没有该beanName对应的BeanDefinition,需要刷新beanDefinitionMap beanDefinitionNames manualSingletonNames三个属性中数据

5.最后,如果满足其中一个条件:1.注册表中已有该beanName 2.该单例已被创建,则重置BeanDefinition,里面用到了递归,主要为了处理BeanDefinition的父子关系问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值