spring的三级缓存

2023-09-03  本文已影响0人  玖柒叁

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注解

上一篇下一篇

猜你喜欢

热点阅读