美文网首页
spring circular dependency

spring circular dependency

作者: 毛里求疵 | 来源:发表于2019-12-11 16:32 被阅读0次

    一、Spring的生命周期

    image

    二、循环依赖

    //三种方式
    
    1、构造器参数循环依赖
    
    2、setter方式(singleton)
    
    3、setter方式(prototype)
    

    三、问题分析

    1、从上图生命周期可以推出“构造器参数循环依赖”Spring是无法解决的。
    
    2、由于三级缓存不保存非单例模式的bean对象,所以无法解决上述prototype方式。
    
    3、只有singleton方式的循环依赖,是可以通过Spring的第三级缓存来解决的。
    

    四、三级缓存

    // 第一级缓存,里面放置的是实例化好的单例对象
    private final Map<String, Object> singletonObjects = new ConcurrentHashMap<String, Object>(256);
    
    // 第二级缓存,里面存放的是要被实例化的对象的对象工厂
    private final Map<String, ObjectFactory<?>> singletonFactories = new HashMap<String, ObjectFactory<?>>(16);
    
    // 第二级缓存,里面存放的是提前曝光的单例对象
    private final Map<String, Object> earlySingletonObjects = new HashMap<String, Object>(16);
    

    相关文章

      网友评论

          本文标题:spring circular dependency

          本文链接:https://www.haomeiwen.com/subject/kpxagctx.html