spring的三级缓存

spring的三级缓存:

Spring 容器的“三级缓存”

Spring 容器的整个生命周期中,单例Bean对象是唯一的。即可以使用缓存来加速访问

Spring 源码中使用了大量的 Cache 手段,其中在循环依赖问题的解决过程中就使用了“三级缓存”

三级缓存的意义

singletonObject:一级缓存,存放完全实例化且属性赋值完成的 Bean ,可以直接使用
earlySingletonObject:二级缓存,存放早期 Bean 的引用,尚未装配属性的 Bean
singletonFactories:三级缓存,存放实例化完成的 Bean 工厂

除了三级缓存,还有另外两个缓存

singletonsCurrentlyInCreation: bean 在创建的过程中都会存储在此,创建完成移出
alreadyCreated:存放至少被创建一次的 bean,不会重复。即标记 bean 是否创建完成

原文链接:https://blog.csdn.net/weixin_44181671/article/details/108630950

对于Spring循环依赖的情况总结如下:

不能解决的情况:

  1. 构造器注入循环依赖
  2. prototype field属性注入循环依赖

能解决的情况 :

  1. field属性注入(setter方法注入)循环依赖

spring ioc 内部的三级缓存保证了它不会出现循环依赖问题。为什么呢?
https://blog.csdn.net/weixin_44181671/article/details/108630950

但最后循环依赖最终是设计层面的问题,应该从设计层面来避免它,以免后续系统难以维护。

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/5411.html

赞 (0)
LomuLomu
上一篇 2025 年 1 月 6 日 下午3:44
下一篇 2025 年 1 月 6 日

相关推荐

  • 2026国内GPT Claude代充入口怎么选

    国内GPT和Claude代充入口选择,要看产品清晰度、账号归属、到账规则和售后处理。

    未分类 2026 年 5 月 25 日
    34600
  • manim边学边做–旋转

    本篇文章将深入探讨Manim库中的两种旋转动画类:Rotate和Rotating,它们虽然名称相似,但在功能和应用场景上各有千秋。 Rotate类专注于对图形对象进行精确的旋转操作,它允许用户指定旋转的角度、轴心点等,非常适合于几何图形的演示、物理模拟以及机械运动的展示等场合。 相对而言,Rotating类则致力于创建一个持续旋转的效果,使对象围绕一个轴或点…

    2024 年 12 月 26 日
    82600
  • ChatGPT Plus 与 Claude Pro 充值怎么选

    ChatGPT Plus 与 Claude Pro 充值怎么选。整理 ChatGPT Plus、Claude Pro 充值代充、国内支付、续费订阅和到账检查的关键注意事项。

    未分类 2026 年 5 月 18 日
    33900
  • ChatGPT Plus国内支付订阅开通教程

    很多人已经有 ChatGPT 账号,但到了开通 Plus 时才发现,真正麻烦的不是登录,而是付款方式。国内用户如果没有海外信用卡,官方订阅页面往往不太好处理;再去研究虚拟卡、礼品卡或共享账号,又会多出不少额外步骤。ChatGPT Plus国内支付订阅开通教程 这类需求,本质上就是想把会员开到自己的原账号里,同时用国内更熟悉的支付方式完成。

    未分类 2026 年 6 月 30 日
    24500
  • ChatGPT Plus续费充值开通教程

    对于内容创作者、程序员和办公用户来说,ChatGPT Plus 更像一个长期工具,而不是临时玩具。想把它用稳定,最好还是升级自己的账号。国内用户常见的门槛是支付方式不匹配、虚拟卡流程复杂、共享账号不放心。这里采用的方案是先购买充值卡密,再按页面要求提交当前账号 Session 完成确认。

    未分类 2026 年 6 月 29 日
    31700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信