spring源码getBean结合源码流程说明

本文深入剖析了Spring框架中Bean的创建步骤,包括从调用getBean开始,经过别名解析、缓存查找、Bean定义合并、依赖解析、实例化、属性注入、初始化等关键环节,详细阐述了Spring如何管理及构建Bean实例。
摘要由CSDN通过智能技术生成

1.getBean方法

2.调用doGetBean方法

3.transformedBeanName对别名进行解析

4.getSingleton 去一级,二级,三级缓存中去获取对象

5.判断获取的对象是否为空,如不为空,如果是FactoryBean的话,进行处理,不是直接返回

6.获取父工厂,如果父工厂不为空且容器中不包含当前创建的beand定义,走父工厂getbean流程

7.getMergedLocalBeanDefinition(beanName)合并bean定义

8.checkMergedBeanDefinition 校验当前的bean定义,如果是抽象的报异常

9.registerDependentBean  解析依赖的bean,并且注册依赖,

10.根据Bean定义的scope来创建bean

11,getSingleton(beanName, lambad表达式)

12.beforeSingleCreation 标记当前的Bean马上就要创建了,singletonsCurrentlyInCreation 在这里会把beanName加入进来

13.singletonFactory.getObject() 这里进行回调lambda表达式中的createBean方法

14.createBean进行创建bean的流程

15.resolveBeforeInstantiation 这里给后置处理器一个机会返回代理对象,这里会把aop切面的信息解析处理并进行缓存

16.doCreateBean 这里是真正的创建Bean的逻辑

17.creatBeanInstance  推断构造方法,创建实例对象

18.addSingletonFactory 将创建的实例对象放入三级缓存中, 用来解决循环依赖问题

19.populateBean 对于对象中加了Autowired注解的属性进行属性填充

20.initializeBean 进行对象初始化操作

21.回调 Aware接口,如beanNameAware,BeanFactoryAware

22.调用BeanPostProcessor的初始化前的方法

23.进行初始化处理

24.调用BeanPostProcessor的初始化后的方法,这里会进行aop处理

25.afterSingleCreation 把当前的bean给从singletonsCurrentlyInCreation移除掉

26.addSingleton 把创建好的对象放进到缓存池,清空二三级缓存

27.getObjectForBeanInstance 如果是工厂bean 进行处理,不是直接返回

28.spring容器关闭时,调用DisposableBean的destroy方法进行销毁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值