一文搞懂Spring解决循环依赖问题 ✨ 每日积累

简介: 一文搞懂Spring解决循环依赖问题 ✨ 每日积累

辅助图解


1.png

1、spring启动之后,bean相关的定义信息会被loadBeanDefinition通过io等操作加载
 2、加载后的bean定义信息转为Document对象,里面由很多父子节点
 3、通过BeanDefinitionReader读取器读取到spring的container容器中
 4、通过Document对象中的父子节点转化为BeanDefinition
 5、放入beanDefinitionMap,遍历map验证(是否单例、是否延迟加载、是否抽象)
 6、推断构造方法,准备开始进行实例、


循环依赖开始


7、1 首先去单例池中查找,查不到去二级缓存池去找,
 7、2 没有则创建这个对象的objectFactory(半成品对象:利于拓展,程序员可以通过beanPostProcess接口操作objectFactory对象生成自己想要的对象)到二级缓存中。
 7、3 属性注入阶段时发现当前对象A依赖另外一个对象B,此时B对象开始它的生命周期开始直到属性注入,发现自己依赖A对象,
 7、4 在二级缓存中找的时候找到了A的objectFactory对象(半成品)对B对象进行属性注入,
 7、5 完成B对象初始化依赖,将完整B对象放入单例池;
 7、6 A对象属性注入B对象,然后完成A对象的整个初始化,将A对象放入单例池;
 7、7 在A和B对象都放入单例池之后销毁二级缓存中的objectFactory对象。
相关文章
|
8天前
|
人工智能 Java Spring
Spring Boot循环依赖的症状和解决方案
Spring Boot循环依赖的症状和解决方案
|
8天前
|
缓存 Java 开发工具
【spring】如何解决循环依赖
【spring】如何解决循环依赖
15 0
|
8天前
|
存储 缓存 Java
【Spring系列笔记】依赖注入,循环依赖以及三级缓存
依赖注入: 是指通过外部配置,将依赖关系注入到对象中。依赖注入有四种主要方式:构造器注入、setter方法注入、接口注入以及注解注入。其中注解注入在开发中最为常见,因为其使用便捷以及可维护性强;构造器注入为官方推荐,可注入不可变对象以及解决循环依赖问题。本文基于依赖注入方式引出循环依赖以及三层缓存的底层原理,以及代码的实现方式。
24 0
|
8天前
|
存储 缓存 Java
【spring】06 循环依赖的分析与解决
【spring】06 循环依赖的分析与解决
10 1
|
8天前
|
存储 缓存 Java
Spring解决循环依赖
Spring解决循环依赖
|
8天前
|
缓存 算法 Java
开发必懂的Spring循环依赖图解 Spring 循环依赖
开发必懂的Spring循环依赖图解 Spring 循环依赖
22 1
|
8天前
|
缓存 算法 Java
Spring解决循环依赖
Spring解决循环依赖
22 1
|
8天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
65 0
|
8天前
|
缓存 安全 Java
Spring Boot 面试题及答案整理,最新面试题
Spring Boot 面试题及答案整理,最新面试题
143 0
|
8天前
|
存储 JSON Java
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
50 2