Spring DI源码时序图

源码入口

在这里插入图片描述

  1. getBean 我们用最常用的根据bean 的名称 从ioc容器中获取bean 做为入口
    在这里插入图片描述

  2. 实现这个接口方法的类是AbstractBeanFactory 其中getBean方法调用了doGetBean 真正从IOC容器中获取被管理的Bean
    在这里插入图片描述

  3. 调用了本类的doGetBean方法去获取Bean 并且实现依赖注入 其中最为重要的方法是createBean此方法 创建指定Bean的实例
    在这里插入图片描述

  4. 点击createBean方法进入到AbstractAutowireCapableBeanFactory类中 该类中实现了createBean方法来创建实例对象 而这个方法真正创建Bean方法是doCreateBean
    在这里插入图片描述

  5. doCreateBean 方法 最为重要的两个方法为:createBeanInstance 创建bean的实例 ,另外一个方法是:populateBean 封装创建的实例对象 并且赋值Bean 定义配置的属性给实例对象。
    在这里插入图片描述
    在这里插入图片描述

  6. 首先来看createBeanInstance方法 此方法是当前类的方法 这个方法主要的内容是 查看当前的bean是否可实例化 然后去进行实例化 最主要的实例化方法instantiateBean
    在这里插入图片描述

  7. 改方法是在当前类中 主要是去将实例化Bean对象 其中getInstantiationStrategy().instantiate 是把实例化对象封装起来
    在这里插入图片描述

  8. instantiate方法是在SimpleInstantiationStrategy类中 这个方法 其中会有两种方式来实例化对象:BeanUtils.instantiateClass使用BeanUtils实例化,通过反射调用 newInstance()来实例化。 另外一种是通过instantiateWithMethodInjection 这个方法是通过 使用CGLIB来实例化对象在这里插入图片描述

  9. populateBean此方法封装Bean实例 并且注入Bean中设置Bean中的属性值 这个方法主要是内容是:① 获取容易在解析bean定义资源时候的BeanDefiniton中设置的属性, ②:对属性进行注入 applyPropertyValues
    在这里插入图片描述

  10. applyPropertyValues 设置实例化对象属性值 其中最主要的方法是 setPropertyValue
    在这里插入图片描述

  11. 总体流程: 开始实例化——>选择实例化策略——>执行实例化——>准备依赖——>解析注入规则——>注入赋值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值