SpringBoot的三级缓存
Info
SpringBoot 依靠三级缓存方案解决循环依赖的问题,这三级缓存在 Spring 中表现为三个 Map 对象。这三个 Map 对象定义在 DefaultSingletonBeanRegistry 类中,该类是 DefaultListableBeanFactory 的父类。
DefaultSingletonBeanRegistry 中的三级缓存 Map 定义代码
Spring Boot进阶:原理、实战与面试题分析#^3300019666-15-797-823
三级缓存分别是:
三级缓存分别为 singletonObjects、earlySingletonObjects、singletonFactories。
一级缓存 singletonObjects
一级缓存用来持有完整的 Bean 实例。
二级缓存 earlySingletonObjects
在二级缓存中存放的是那些提前暴露的对象(已经创建但是还没有完成属性注入的对象)
三级缓存 singletonFactories
第三级缓存 singletonFactories 是用来存放 二级缓存earlySingletonObjects 的工厂对象
Spring Boot进阶:原理、实战与面试题分析#^3300019666-15-1520-1689