spring事务注解中timeout配置

编程入门 行业动态 更新时间:2024-10-25 02:29:55

spring事务<a href=https://www.elefans.com/category/jswz/34/1768912.html style=注解中timeout配置"/>

spring事务注解中timeout配置

要点
Spring事务超时 = 事务开始 到 最后一个Statement创建之间的时间 + 最后一个Statement的执行的时间(即其queryTimeout)


设置@Transactional(timout = 1)时,希望是当前方法在一个事务中,且事务执行时间应小于1秒中,若超过1秒则应抛出异常:
 Transaction timed out: deadline was Mon Jul 05 00:02:18 CST 2021

但这其中有一个坑:

  • case1: 抛出Transaction timed out 异常
    @Transactional(timeout = 1)public List<ResourceEntity> findAll2() throws InterruptedException {TimeUnit.SECONDS.sleep(2);List<ResourceEntity> resourceEntities = resourceMapper.rangeQueryResources(1, 20);return resourceEntities;}
  • case2: 不会抛出 Transaction timed out 异常
    @Transactional(timeout = 1)public List<ResourceEntity> findAll3() throws InterruptedException {List<ResourceEntity> resourceEntities = resourceMapper.rangeQueryResources(1, 20);TimeUnit.SECONDS.sleep(2);return resourceEntities;}

case2可能导致代码中的坑,所以在一个事务方法中,在查询数据库之后不要有耗时过高的操作

具体分析可参考:
Spring事务超时时间可能存在的错误认识

更多推荐

spring事务注解中timeout配置

本文发布于:2024-02-27 00:05:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1704494.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:注解   事务   spring   timeout

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!