美文网首页
SpringBoot异步任务及Async不起作用的原因

SpringBoot异步任务及Async不起作用的原因

作者: 少年眼蓝不及海 | 来源:发表于2021-03-12 17:53 被阅读0次

不能在本类中直接调用方法,需要使用组件的实例调用

以下是异步方法失效的原因:
一、异步方法使用static修饰
二、异步类没有使用@Component注解(或其他注解)导致spring无法扫描到异步类
三、测试异步方法不能与异步方法在同一个类中
四、测试类中需要使用@Autowired或@Resource等注解自动注入,不能自己手动new对象
五、如果使用SpringBoot框架必须在启动类中增加@EnableAsync注解

作者:闲的蛋疼VIP
链接:https://www.jianshu.com/p/813fe02e2e8d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

不起作用

  public void call(List<WriteModel<Document>> writeModelList) {
        task(param);
    }
    @Async
    public void task(param) {
        //do 
    }

起作用

    @Autowired
    A a;
    public void call(List<WriteModel<Document>> writeModelList) {
        a.task(param);
    }

  @Service
  public class A{
    @Async
    public void task(param) {
        //do 
    }
}
    

我们可以通过AOP的机制和织入点来判断。

相关文章

网友评论

      本文标题:SpringBoot异步任务及Async不起作用的原因

      本文链接:https://www.haomeiwen.com/subject/zubzqltx.html