当前位置: 首页 > news >正文

记录一次出现循环依赖问题

具体的结构设计:
在这里插入图片描述
在上面的图片中:
UnboundBlackVerifyChain类中继承了UnboundChain类。但是UnboundChain类中注入了下面三个类。
@Scope(“prototype”)
UnboundLinkFlowCheck类

@Scope(“prototype”)
UnboundUserNameCheck类

@Scope(“prototype”)
UnboundIdCardCheck类
这三个类都是原型的且都注入了DeconstructionService类。

但是DeconstructionService类中又注入了UnboundBlackVerifyChain类。那么就形成了循环依赖了。

在Spring框架中,当两个bean相互依赖时,可能会出现循环依赖问题。Spring可以处理某些情况下的循环依赖,但其处理能力取决于bean的作用域(scope)。

单例作用域(Singleton Scope)
对于默认的单例作用域,Spring能够通过三级缓存机制处理循环依赖。Spring会在创建bean的过程中,将尚未完全初始化的bean实例暴露在一个早期引用的缓存中,这样其他bean在依赖时可以引用到这个早期的实例。

原型作用域(Prototype Scope)
对于原型作用域,情况就不同了。Spring不支持原型作用域下的循环依赖。原因是原型bean在每次请求时都会创建一个新的实例,Spring无法像处理单例bean那样在创建过程中缓存和注入未完全初始化的bean实例。

因此,当A模块和B模块都配置为原型作用域并且相互依赖时,Spring会在尝试创建bean时抛出一个BeanCurrentlyInCreationException,因为它无法解决这种循环依赖。


http://www.mrgr.cn/news/39723.html

相关文章:

  • 【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL69
  • 电商数据洞察新纪元:深度解析API接口集成实战
  • 双十一实用的数码好物分享!学生党必看,性价比超高!
  • 【无人机设计与技术】四旋翼无人机的建模
  • AI异常检测方案实施-基于基准块的无监督学习
  • TIM“PWM”输出比较原理解析
  • 演讲干货整理:泛能网能碳产业智能平台基于 TDengine 的升级之路
  • 影刀---如何进行自动化操作
  • Windows远程Kylin系统-xrdp
  • 天线工作原理:【图文讲解】
  • 论文答辩ppt一键生成工具去哪找?参赛答辩必备的排版技巧
  • VUE 开发——Node.js学习(一)
  • 无心上班,只想为祖国庆生?让ChatGPT帮你搞定工作!
  • GEE数据集:全球城市热岛强度(UHII)数据集(更新)
  • 【JavaEE】——CAS指令和ABA问题
  • 基于Java+VUE+echarts大数据智能道路交通信息统计分析管理系统
  • PyQt5整合爬虫制作图片爬取器-幽络源
  • ansible学习之 Facts
  • PC流量转移动流量,提升网盘拉新收益
  • Study Plan For Algorithms - Part44