三级缓存是为了判断循环依赖的时候,早期暴露出去已经被别人使用的 bean 和最终的 bean 是否是同一个 bean,如果不是同一个则弹出异常,如果早期的对象没有被其他 bean 使用,而后期被修改了,不会产生异常,如果没有三级缓存,是无法判断是否有循环依赖,且早期的 bean 被循环依赖中的 bean 使用了。
spring getBean三级缓存机制的作用
一级缓存:是单例池,所有初始化完成后的单例对象都会存到这里
二级缓存:存放没有完全被spring初始化完的bean
三级缓存:为了解决循环依赖