循环依赖:多个对象之间存在循环的引用关系,在初始化过程当中,就会出现"先有蛋还是先有鸡"的问题。
解决方法:
一种是 使用@Lazy注解,另一种是使用三级缓存。
@Lazy注解:解决构造方法造成的循环依赖问题。
一级缓存:缓存最终的单例池对象
private final Map singletonObjects = new ConcurrentHashMap(256);
二级缓存:缓存初始化的对象
private final Map earlySingletonObjects = new HashMap(16);
三级缓存:缓存对象的ObjectFactory
private final Map
关注
打赏