Spring的循环依赖

什么是循环依赖?

分为哪几种?

构造器缓存依赖 和 set方法依赖,其中set方法依赖又分为单例set方法依赖和多例set方法依赖

解决发生生在哪里?

发声在getBean方法里的getSingle()方法中

三级缓存?哪三级缓存?每个缓存都是干什么的?

一级缓存:singletonObjects 用于保存beanName和创建bean实例之间的关系

二级缓存:earlySingletonObjects:用于保存beanName和创建bean实例之间的关系,与一级缓存的区别是:当一个单例bean被放在二级缓存中后,当bean还在创建过程中,就可以通过getBean方法获取到了,目的是用来检测循环引用的

三级缓存:singletonFactories:用于检测beanName和bean工厂之间的关系

你可能感兴趣的:(spring,java,缓存)