1.要配合 @EnableAsync 一起服用, @EnableAsync可加在启动类也可加在业务类中
2.@Async据说不能有返回值,范围值无意义(但是我没发现出错),我的返回类型为void了.
3.类中需要使用@Autowired或@Resource等注解自动注入,不能自己手动new对象
4.调用方法和被调用方法其实是可以放在一个类中的
@GetMapping("findAll")
public List<Map> findAll() throws InterruptedException {
Jasper bean = applicationContext.getBean(Jasper.class);
bean.test1("BBBBBBBBBBBB");
}
@Async
public void test1(String param) throws InterruptedException {
Thread.sleep(5000L);
System.out.println("test1" + param );
}
原理:调用自己类的异步方法时,绕过了aop代理从而导致其异步失效,从spring上下文中取得代理对象,继而调用其异步方法。