一直在SpringBoot中使用@Async来达到异步调用的效果,今天在新项目中调用失败了,才去认真了解一下@Async的使用。
参考文章:
Spring异步任务@Async注解源码解析
@EnableAsync 详解,@Async 如何生效
看了上面的文章,才反应过来自己的写的被异步调用的方法和调用者是在同一个类中,而@Async是使用aop代理,同类调用相当于调用了this.asyncMethod(),并没有使用代理类,导致@Async并没有产生效果。
另外排查问题时,最开始想到的是新项目没有加Async相关配置,排查后发现都加了,附链接: SpringBoot:详解@EnableAsync + @Async 实现共享线程池
拓展链接:
https://www.pianshen.com/article/68151493193/
https://zhuanlan.zhihu.com/p/107279533