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

Spring三级缓存

为什么Spring必须是三级缓存,而不是二级或者一级。

想象一个“盖房子”的场景。

  • Bean = 一栋需要装修的房子。
  • 依赖注入 = 给房子安装定制家具。
  • AOP 代理 = 给房子加装一个“智能安防系统”(这个系统会包裹整个房子,改变房子的某些进出行为)。

假设有两栋房子 A 和 B,它们的设计图纸很奇怪:

  • 房子 A 需要一个从房子 B 定制的书桌 (@Autowired B b)。
  • 房子 B 需要一个从房子 A 定制的椅子 (@Autowired A a)。

这就是循环依赖


场景一:如果只有一级缓存 (singletonObjects 成品房仓库)

  1. 开工盖 A: 工人开始盖房子 A 的毛坯。
  2. 需要 B 的书桌: 工人发现 A 需要 B 的书桌,于是停下 A 的工程,跑去盖房子 B。
  3. 开工盖 B: 工人开始盖 B 的毛坯。
  4. 需要 A 的椅子: 工人发现 B 需要 A 的椅子,于是又停下 B 的工程,跑回去找 A。
  5. 死循环: 此时 A 的工程也停着,因为它在等 B。B 的工程也停着,因为它在等 A。两边的工人都大眼瞪小眼,工程永远无法完成。

结论: 一级缓存绝对不行,会直接卡死。


http://www.dtcms.com/a/334942.html

相关文章:

  • 深入理解 Linux 线程:从概念到虚拟地址空间的全面解析
  • 机器学习的特征工程(特征构造、特征选择、特征转换和特征提取)详解
  • 028 动静态库 —— 动态库
  • 第3问 什么是数据指标?
  • 41 C++ STL模板库10-容器3-list
  • MATLAB R2010b系统环境(一)MATLAB简介
  • 云原生俱乐部-RH124知识点总结(3)
  • Dify实战应用指南(上传需求稿生成测试用例)
  • C/C++中的内存分区
  • Java8~Java21重要新特性
  • sharding-jdbc读写分离配置
  • “preinstall“: “npx only-allow pnpm“
  • C#多线程并发安全队列ConcurrentQueue
  • 防火墙虚拟系统配置实验
  • 自然语言处理——02 文本预处理(上)
  • B*算法深度解析:动态避障路径规划的革命性方法
  • AI安全增强核心技术:提示词防火墙、置信度过滤与知识蒸馏防御
  • 2-3〔O҉S҉C҉P҉ ◈ 研记〕❘ 漏洞扫描▸AppScan(WEB扫描)
  • XC6SLX45T-2FGG484C Xilinx AMD Spartan-6 FPGA
  • 16-集合的Stream编程
  • 基于STM32的智能书房系统设计与实现
  • BitLocker解密
  • docker compose安装mysql8
  • UE5多人MOBA+GAS 46、制作龙卷风技能
  • C/单片机内存管理,仿真keii
  • 第5问 对于数据分析领域,统计学要学到什么程度?
  • 第6问 数据分析领域主要的岗位有哪些?
  • 《从混乱到有序:AI 如何一步步梳理数据质量难题》文章提纲
  • 基于Python的课程作业管理系统 Python+Django+Vue.js
  • Python-深度学习.pytorch(二)——自动微分、认识深度学习