Spring源码解析——DI

基于https://blog.csdn.net/qq32933432/article/details/95204514
总结步骤如下:
1.doGetBean

  • 读缓存,缓存中是否已经有被创建过的单态类型的Bean,若有,获取Bean实例对象
  • 如果缓存中没有取得单例模式的Bean,判断是否是正在创建原型bean,若是,抛异常
  • 检查是否能在当前的BeanFactory中获取到所需要的BeanDefinition,如果不能则委托当前容器的父级容器去查找,如果还是找不到则沿着容器的继承体系向父级容器查找
  • 获取父级的Bean定义合并公共属性
  • 递归获取当前Bean所有依赖Bean的名称
  • 根据类型创建bean,进入createBean()方法

2.createBean

  • 进行校验
  • 进入doCreateBean()

3.doCreateBean

  • 创建包装类,封装被创建的Bean对象
  • 调用PostProcessor后置处理(这里感觉有点像aop的前置后置增强)
  • 向容器中缓存单例模式的Bean对象,以防循环引用
  • Bean对象的初始化,依赖注入在此触发
  • 检测该bean依赖的bean是否都已经初始化好了
  • 注册完成依赖注入的Bean
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值