spring三级缓存解决循环依赖
参考链接:https://blog.csdn.net/m0_67393157/article/details/126116613
spring三级缓存是用来解决循环依赖问题的,目前循环依赖只在属性set注入并且单例的情况下才能解决,构造器注入和多例的循环依赖是无法解决的。
一.spring三级缓存
一级缓存:singletonObjects<ConcurrentHashMap<>>
二级缓存:earlySingletonObjects<HashMap<>>
三级缓存:singletonFactories<HashMap<>>
二.分析步骤
循环依赖示例:
@Service public class AService { private BService bService; public AService() { System.out.println("Aservice 构造方法执行---------"); } public BService getbService() { return bService; } public void setbService(BService bService) { this.bService = bService; } } @Service public class BService { private AService aService; public BService() { System.out.println("bService 构造方法--------"); } public AService getaService() { return aService; } public void setaService(AService aService) { this.aService = aService; } }
当容器初始化加载两个beans时,会造成A,B相互依赖,查看bean生命周期,可以追踪bean循环依赖的解决过程。
三.源码解析
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)