1. 首页
  2. 编程语言
  3. Java
  4. spring如何快速稳定解决循环依赖问题

spring如何快速稳定解决循环依赖问题

上传者: 2021-06-07 10:49:47上传 PDF文件 250.47 KB 热度 33次

循环依赖其实就是循环引用,很多地方都说需要两个或则两个以上的bean互相持有对方最终形成闭环才是循环依赖,比如A依赖于B,B依赖于C,C又依赖于A。setter singleton循环依赖使用SingleSetterBeanA依赖SingleSetterBeanB,SingleSetterBeanB依赖SingleSetterBeanA。源码分析spring是通过三级缓存来解决循环依赖的,那么三级缓存是怎么工作的呢?三级缓存对应org.springframework.beans.factory.support.DefaultSingletonBeanRegistry类的三个属性:对于setter注入造成的依赖是通过Spring容器提前暴露刚完成实例化但未完成初始化的bean来完成的,而且只能解决单例作用域的bean循环依赖。使用上面的代码运行时会抛出如下异常:。理论上二级缓存时可行的,只需要将三级缓存中BeanFactory创建的对象提前放入二级缓存中,这样三级缓存就可以移除了。

用户评论