今天被问道了关于spring循环依赖的问题,感觉给人解答的不是很好,所以趁着最近有时间特意研究了下,所以准备写篇波哥记录下,希望大家一起共勉。
那么什么是循环依赖呢?循环依赖其实就是循环引用,也就是两个或者两个以上的bean互相持有对方,最终形成闭环。
解决办法:Spring为了解决单例的循环依赖问题,使用了三级缓存。
这三级缓存分别指:
singletonFactories : 单例对象工厂的cache
earlySingletonObjects :提前暴光的单例对象的Cache
singletonObjects:单例对象的cache
构造器的循环依赖无法解决。
用基于setter方法的依赖注入