spring的三级缓存

spring生命周期加载过程

image.png

三级缓存的作用

class DefaultSingletonBeanRegistry{
    //一级缓存,存储经过完整生命周期的bean对象
    private final Map<String, Object> singletonObjects = new ConcurrentHashMap(256);
    //出现嘞循环依赖时,提前创建的AOP代理对象会存在这里(还没有经过完成的生命周期),防止多个服务提前创建AOP代理对象导致单例模式的破坏
    private final Map<String, Object> earlySingletonObjects = new ConcurrentHashMap(16);
    //三级缓存,打破循环依赖,在对象开始实例化时,如果该对象支持单例、允许循环依赖、在创建中,便会将该对象放入到这个缓存中
    private final Map<String, ObjectFactory<?>> singletonFactories = new HashMap(16);
    
}

循环依赖与解决

1、三级缓存
2、@Lazy注解

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容