美文网首页
Spring循环依赖问题

Spring循环依赖问题

作者: cooze | 来源:发表于2022-09-03 17:21 被阅读0次

什么是循环依赖

循环依赖就是两个对象之间存在相互依赖的关系;

Spring是如何解决循环依赖的

Spring使用三级缓存来解决循环依赖

三级缓存如何解决循环依赖的

三级缓存是通过三个HashMap来实现的。

  • 一级缓存,用于保存已完成初始化的Bean实例,对外暴露可用的实例;
  • 二级缓存,保存尚未完成初始化的Bean实例,为了处理循环依赖的对象创建问题;
  • 三级缓存,保存创建Bean实例的工厂类,处理存在 AOP + 循环依赖的对象创建问题,能将代理对象提前创建。

三级缓存解决循环依赖过程

循环依赖

Spring 为什么要引入第三级缓存?

Spring 的设计原则是尽可能保证普通对象创建完成之后,再生成其 AOP 代理(尽可能延迟代理对象的生成)所以 Spring 用了第三级缓存,既维持了设计原则,又处理了循环依赖。

只用二级缓存能不能解决循环依赖?

可以,但是在AOP对象发生循环依赖的时候会存在一些问题。
一级和二级缓存
如果只用一级缓存和二级缓存时,在给Bean实例注入依赖时只能注入原始对象,而非提前创建的代理对象。因为属性赋值阶段完成之后,在Bean初始化阶段才会生成代理对象。
一级和三级缓存
如果只用一级缓存和三级缓存时,在每次获取依赖Bean实例的时候,都会通过ObjectFactory创建新的实例,违背Spring设计原则。

相关文章

  • 大厂面试系列(四):Spring相关

    Spring相关 spring工作原理简单介绍 循环依赖问题 spring/spring boot启动加载过程 ?...

  • Spring 循环依赖问题fix

    Spring 循环依赖问题fix 拆分的时候,把error都处理完后,准备把工程起起来,发现spring的循环依赖...

  • spring循环依赖问题

    使用spring boot 进行bean内方法循环依赖问题的研究,简单来说就是TestA.test()依赖Test...

  • Spring循环依赖问题

    https://gavinzhang1.gitbooks.io/spring/content/xun_huan_y...

  • Spring循环依赖问题

    循环依赖就是N个类中循环嵌套引用,如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循...

  • spring循环依赖问题

    1、问题描述循环依赖的场景举例,如下两个类,就产生了相互依赖,那么初始化的时候,spring是怎样做的呢?@Com...

  • Spring循环依赖问题

    什么是循环依赖 循环依赖就是两个对象之间存在相互依赖的关系; Spring是如何解决循环依赖的 Spring使用三...

  • Spring 是如何解决循环依赖的?

    Spring 是如何解决循环依赖的? 循环依赖: Spring 循环依赖有三种情况: 构造器的循环依赖,这种依赖 ...

  • Spring-IOC-循环依赖检测与Bean的创建

    Spring容器的循环依赖检测 Spring容器循环依赖包括:构造器循环依赖和setter循环依赖。 1- 构造器...

  • Spring核心之bean生命周期和三级缓存

    在使用spring框架的日常开发中,bean之间的循环依赖太频繁了,spring已经帮我们去解决循环依赖问题,对我...

网友评论

      本文标题:Spring循环依赖问题

      本文链接:https://www.haomeiwen.com/subject/vogunrtx.html