Spring源码分析(2)-DI 依赖注入过程分析

本文深入剖析了Spring框架中依赖注入(DI)的工作流程,详细介绍了实例化与依赖注入两个核心阶段,以及不同初始化策略下bean的加载时机,通过源码分析揭示了getBean方法在bean创建过程中的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、DI注入时序图

整个注入过程可以分成2个阶段

1. 实例化:创建对应的bean

2.依赖注入:将bean的相关依赖注入到实例中

 

二、入口分析

1.如果没有设置lazy-init=false,那么spring默认会在第一次调用bean的时候才初始化bean,所以入口在beanFatcory接口的getBean方法中。

2.如果设置了lazy-init=false,那么spring会在容器启动的时候直接初始化。在上一篇分析IOC初始化的时候,容器在初始化的时候都会调用refresh方法,在refresh方法中有一个finishBeanFactoryInitialization方法,这个就是直接初始化bean的入口,而在finishBeanFactoryInitialization方法内部其实也是调用BeanFactory的getBean方法来生成bean的

 

三、源码分析

调用BeanFatory的getBean方法->AbstractBeanFactory的getBean方法的具体实现->调用AbstractAutowireCapableBeanFactory的createBean方法->AbstractAutowireCapableBeanFactory的doCreateBean方法->先执行createBeanInstance创建对应的实例,然后通过populateBean注入相关属性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值