@Transactional 事务提交之后执行 @Async 修饰的异步方法
时间: 2023-10-28 11:56:48 浏览: 95
一个AsyncTask异步任务的操作实例
4星 · 用户满意度95%
在使用 @Transactional 注解进行事务管理时,如果在方法中同时使用了 @Async 注解修饰了一个异步方法,则该异步方法是在事务提交之后执行的。原因是,@Transactional 注解会将方法内的所有操作包装在一个事务中,事务提交之前会阻塞线程,等待事务提交完成后才会继续执行下一步操作。而 @Async 注解则会开启一个新的线程来执行被修饰的方法,因此该方法会在事务提交之后异步执行。
需要注意的是,如果异步方法内部也有数据库操作并且使用了 @Transactional 注解进行事务管理,则该事务的提交时间会与外部事务的提交时间无关,而是在异步方法内部的事务提交完成后才会执行异步方法的后续操作。因此,在使用 @Async 注解时要注意事务的嵌套和提交顺序,以免出现意外情况。
阅读全文