使用@Async一跑就报错
时间: 2023-11-21 08:50:13 浏览: 98
springboot中@Async默认线程池导致OOM问题
5星 · 资源好评率100%
回答: 当使用@Async注解时,可能会出现报错的情况。根据引用\[1\]中的内容,有几个常见的原因可能导致报错。首先,被注解@Async的方法不能是public方法。其次,被注解@Async的方法的返回值只能是void或者Future。另外,如果被注解@Async的方法使用了static修饰,也会失效。此外,如果没有在类上加上注解@Async或@EnableAsync,Spring无法扫描到异步类,也会导致报错。还有一点需要注意的是,调用方与被调方不能在同一个类,因为Spring在扫描bean时会生成代理类来调用有注解的方法,如果调用方与被调方在同一个类,调用将直接通过原来的bean,而不是通过代理类,导致@Async失效。因此,一般将要异步执行的方法单独抽取成一个类。最后,如果在Async方法上标注@Transactional是无效的,但在Async方法调用的方法上标注@Transactional是有效的。希望这些信息能帮助你解决报错问题。
#### 引用[.reference_title]
- *1* [@Async失效情况](https://blog.csdn.net/ElendaLee/article/details/127411225)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [async/await如何处理错误](https://blog.csdn.net/O_x_y_g_e_n/article/details/123079080)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文