Spring getBean流程

Bean的生命周期(创建Bean的流程)

简单来说,Bean的生命周期只有四个阶段:实例化 Instantiation --> 属性赋值 Populate --> 初始化 Initialization --> 销毁 Destruction。

在这里插入图片描述
getBean方法是spring ioc的核心,阅读getBean方法的源码也是理解spring容器工作原理所必须要做的事情!

我们先来看一下getBean方法,getBean的具体实现逻辑在AbstractBeanFactory类里面的doGetBean方法中。

首先简略地介绍一下整体的执行流程:

1.根据传入beanName获取bean的别名

2.尝试从缓存中获取之前被实例化过了的单例bean

3.根据上面获取到的实例进一步获取bean(因为获取到的可能是一个工厂bean)

4.如果上面的步骤之后没有获取到bean那么就需要创建bean了

5.先根据缓存判断一下当前的bean是否正在被创建,如果是的话表示依赖循环了

6.尝试获取当前工厂的父工厂并从当前工厂的bean定义缓存中获取bean定义委托父工厂去生成

7.如果当前要获取的bean只是为了进行类型检查就标记bean已经被创建

8.同当前bean的父类合并bean的定义,并检查获取到的bean定义是不是抽象的

9.通过上面获取到的bean定义找到当前bean的依赖bean并递归调用getBean方法获取依赖bean

10.判断bean的scope是单例的还是原型的或者是其他的创建bean

11.根据要求返回的bean类型通过convertService来对bean进行转换
————————————————
版权声明:本文为CSDN博主「完美的工程学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dcx5173/article/details/118344056

  • 参考
  • https://blog.csdn.net/dcx5173/article/details/118344056?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-118344056-blog-120083309.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-118344056-blog-120083309.pc_relevant_aa&utm_relevant_index=2
  • https://blog.csdn.net/zhang_qing_yun/article/details/120083309
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值