现象:系统中存在Aservice调用Bservice,Bservice调用Cservice,Cservice调用Bservice。系统中service之间存在相互调用,就导致service循环依赖注入。
循环依赖注入是什么:循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图:
注意,这里不是函数的循环调用,是对象的相互依赖关系。循环调用其实就是一个死循环,除非有终结条件。
解决办法:采用@Lazy懒加载,在使用的时候再去实例化bean,如下所示:
@Autowired
@Lazy
private CfOrderToBatchService cfOrderToBatchService;
PS:解决办法有很多种,目前我们项目是采用这种方式完美解决循环依赖注入,仅供大家参考。
参考网址: https://blog.csdn.net/u010853261/article/details/77940767