前四篇文章结合例子简单讲述了spring boot如何配置和使用线程池、如何监听异步执行结果和捕获异常,以及如何使用多线程池进行隔离。
异步任务中,事务也是很关键的一部分。
Spring boot线程池异步的事务处理机制如下图:

(基于spring boot2.0.2版本实践分析得出)
图中表示的是用@Async注解修饰的异步方法,在各种场景下的事务表现。
比如:
异步方法在没有事务注解的情况下,去调用通过@Autowired注入的有事务注解的其他对象方法时,事务是生效的(即表格第三列倒数第二行结论)。
其背后的原理是,AOP的动态代理生成的代理对象和当前对象的区别。
所以,在spring boot线程池使用时,给@Async方法加@transactional是一种比较方便的处理方式。除此之外,将事务主体作为单独对象调用,也可以保证事务生效。





推荐阅读
相关文章:
spring cloud源码分析——ribbon负载均衡策略
mybatis源码分析:(一)SqlSessionFactory创建过程
你可能喜欢:

自由,
是因为自己真的有方向。
文章转载自一言良语,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




