美文网首页
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