不能在本类中直接调用方法,需要使用组件的实例调用
以下是异步方法失效的原因:
一、异步方法使用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的机制和织入点来判断。
网友评论