springboot解决循环依赖问题
最近的springboot项目开发时运行没问题,打包运行时报错:抛出BeanCurrentlyIn CreationException异常:Requested bean is currently in creation: Is there an unresolvable circular reference?。这就是典型的循环依赖问题。一、什么是循环依赖循环依赖就是两个类互相依赖,互相调用,例如:
最近的springboot项目开发时运行没问题,打包运行时报错:抛出BeanCurrentlyIn CreationException异常:Requested bean is currently in creation: Is there an unresolvable circular reference?。
这就是典型的循环依赖问题。
一、什么是循环依赖
循环依赖就是两个类互相依赖,互相调用,例如:
serviceA 中调用serviceB,serviceB中又调用serviceA,两个类,互相注入,互相调用。
二、循环依赖发生原理
当程序启动,Spring Context加载所有的Bean时,会尝试按他们运行的工作顺序创建每个Bean,如果没有循环依赖,创建的顺序为A - B - C,这里C依赖B,B又依赖A,正常编译。
循环依赖的发生于你使用构造函数注入的时候,其他注入方式不会发生此问题,
因为其他方式会在程序用到这个依赖时,才会注入,而不是发生在Spring Context加载阶段。
三、解决方法
1.最好是重新设计你的程序,明显依赖比较乱,分层没有处理好。
2.使用@Lazy注解: 第一种方法是标记@Lazy注解到你的构造函数的参数内,让Spring懒惰的初始化这个Bean,即给这个Bean创建一个代理,当真正使用到这个Bean时才会完全创建。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)