@Async 异步注解不起作用的坑


背景

今天在做项目的时候要在接口功能完成后要保存操作记录。为了防止保存操作记录功能异常影响主功能,于是打算将保存操作记录方法设置为异步调用。

spring项目中使用异步很简单,只要在异步方法上方放一个@Async注解就可以了。但是今天发现一个坑。

项目是tomcat启动的项目,不是springboot项目。如果要使用这个注解,那么需要在spring配置文件中配置一个异步执行器的线程池才能有用,如下

<!--    异步-->
    <task:executor id="executor" pool-size="5"/>
    <task:annotation-driven executor="executor"/>

但是,加了之后还是没用

 

解决

项目的service层是采用接口和接口实现类设计的,一开始我把@Async注解放在了接口实现类的saveProjectHistory()方法上,没有起作用。但是把@Async注解放在接口的saveProjectHistory()方法定义上就有用了。

 

 

 

 

 

至于具体原因,暂时不知道。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM