Spring 为什么@Async注释会导致循环引用问题?

Spring 为什么@Async注释会导致循环引用问题?,spring,asynchronous,autowired,Spring,Asynchronous,Autowired,这是我的豆子: @Service public class MyService{ @Autowire private OtherService service; @Async public jobAync(){ job(); } public job(){ ... } } 我无法理解为什么jobAync的@Async注释会导致Spring的循环引用问题,如果我删除该注释,一切都会正常。。。我希望在autowires中发现问题

这是我的豆子:

@Service
public class MyService{

   @Autowire
   private OtherService service;

   @Async
   public jobAync(){
      job();
   }
   public job(){
      ...
   }
}

我无法理解为什么jobAync的@Async注释会导致Spring的循环引用问题,如果我删除该注释,一切都会正常。。。我希望在autowires中发现问题,但似乎与@Async有关。

我不知道这是否是最佳解决方案,但我用两种不同的服务解决了问题,一种是主服务,另一种是异步服务:

@Service
public class MyService{

   @Autowire
   private OtherService service;

   public job(){
      ...
   }
}

@Service
public class MyServiceAsync{

   @Autowire
   private MyService myService;

   @Async
   public job(){
      myService.job();
   }
}

嗨,这就是@async导致循环引用错误的原因:

AsyncConfigurer配置类在应用程序上下文引导的早期进行初始化。如果您需要任何对其他bean的依赖,请确保尽可能将它们声明为“懒惰”,以便让它们也通过其他后处理器

您可以将@lazy添加到其他bean中该bean的注入点