Spring中bean的生命周期和循环依赖

生命周期

 

实例化spring容器

 

有一个BeanFactory会做接下来的事情

 

扫描加了注解或者配置的类

解析类

实例化beandefinition 放入map

 

第一次调用后置方法

扫描二维码关注公众号,回复: 11468209 查看本文章

遍历map,验证beandefinition

 

反射并推断构造方法,使用构造方法区new一个实例

 

缓存、注解、合并db对象

提前暴露到二级缓存

 

属性注入----涉及循环依赖(其实是在create之前)

 

调用很多后置方法

完成aop

 

放入单例池

 

销毁

 

循环依赖

AB相互循环依赖

 

 

spring容器先去生成a的bean对象,检测到有循环依赖之后,就会在create a之前将a加入二级缓存,然后注入的时候检测需要b,就重新走一遍b的流程,b在注入的时候会去二级缓存的sigtonfacctory(单例工厂)对象中拿到a,将a放入三级缓存,然后完成注入。然后再走a的属性注入流程,拿到b注入到a里。

注意:

1、单例工厂会调用很多后置处理器处理这个类的返回。

2、为什么有三级缓存,为了提高效率,不需要每一次都是用单例工厂产生/加工一遍a

3、aop通常在属性注入之后,那么循环依赖的时候注入b的a怎么aop呢?

在单例工厂中相当于会提前调用aop的后置处理器,完成aop

猜你喜欢

转载自www.cnblogs.com/CooperXia-847550730/p/13400117.html