Error creating bean with name “****“ 依赖循环问题(添加@Async启动包错)

1.什么是循环依赖?

它发生在bean A依赖于另一个bean B时,bean B依赖于bean A:

豆A→豆B→豆A
spring 注入不小心就会出现这种问题。

2.我在某个service的实现类中 给方法加了个@Async(异步)注解就包错了

Error creating bean with name "": Requested bean is currently in creation: Is there an unresolvable circular reference?
创建名称为“
”的bean时出错:被请求的bean目前正在创建中:是否存在无法解决的循环引用?

3.从这张图可以推算应该是这三个类循环了,但其实不是Error creating bean with name “****“ 依赖循环问题(添加@Async启动包错)_第1张图片

他包错的原因是 一个高手写的好代码,他竟然自己注入自己。在没有异步方法的时候运气好没有包错
添加了异步方法就包依赖循环错误了。
Error creating bean with name “****“ 依赖循环问题(添加@Async启动包错)_第2张图片

4.两个或以上的类相互注入所报的错误。同样可能在没有添加@Async(异步)的时候不会包错,但添加就报错。

A (有异步) A注入B
B (有异步) B注入A , B注入C
C (无异步)C注入B
启动时 应该会报A出现依赖循环错误。这个有点绕想要,在循环的时候添加@Async是可以实现的
这个就得你自己去测试了。
当然也会有bug。不是启动的bug

解决方法:
1:不要@Async(异步)。 sb解决方式,我就是要用这个才添加@Async的
2:重构。使他们不再循环。 这个比较难。看你业务的逻辑了

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