Spring--绘制DI时序图

本文介绍了Spring中的依赖注入(DI)概念,并详细解析了DI的实例化和赋值注入两个阶段。在实例化阶段,从BeanFactory的getBean()方法开始,通过一系列的调用最终实现对象的反射实例化。在赋值注入阶段,利用AbstractAutowireCapableBeanFactory的populateBean()方法进行属性注入,涉及多个方法调用来设置属性值。
摘要由CSDN通过智能技术生成

一:什么是DI

DI:Dependency Injection ,即依赖注入,容器全权负责组件的装配,它会把符合依赖关系的对象通过属性(JavaBean中的setter)或者是构造方法传递给需要的对象。

二:时序图

DI时序图
三:浅析

DI可以大致分为实例化,赋值注入两个阶段。

1.实例化阶段

因为Spring默认是懒加载的,所以要调用getBean()方法时才会进行实例化,所以代码的入口应该是BeanFactory的getBean(),而BeanFactory的getBean()实际上调用的应该是AbstractBeanFactory的getBean(),而在getBean()中又调用了doGetBean()方法,而doGetBean()方法中调用了AbstractAutowireCapableBeanFactory中的createBean(),然后调用doCreateBean(),再接着调用createBeanInstance(),再调用instantiateBean()方法,接着调用SimpleInstantiationStrategy中的instantiate()方法,最后通过调用BeanUtils中的instantiateClass()方法进行实例化,而instantiateClass()实际上就是通过反射进行实例化。

2.赋值注入阶段

AbstractAutowireCapableBeanFactory类中调用了createBeanInst

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值