这是我的豆子:
@Service
public class MyService{
@Autowire
private OtherService service;
@Async
public jobAync(){
job();
}
public job(){
...
}
}
我无法理解为什么@Async注释到jobAync导致Spring的循环引用问题,如果我删除该注释一切正常...我希望在autowires中发现问题但似乎与@Async相关联。
答案 0 :(得分:1)
您好,这就是@async引起循环引用错误的原因:
AsyncConfigurer配置类在应用程序上下文引导中提前初始化。如果您在那里需要对其他bean的任何依赖,请确保尽可能将它们声明为“惰性”,以使它们也可以通过其他后处理器。
您可以在其他bean的注入点中添加@lazy。
答案 1 :(得分:0)
我不知道这是否是最佳解决方案,但我解决了两种不同的服务,主服务和异步服务:
@Service
public class MyService{
@Autowire
private OtherService service;
public job(){
...
}
}
@Service
public class MyServiceAsync{
@Autowire
private MyService myService;
@Async
public job(){
myService.job();
}
}