博客
关于我
@Transactional注解事务不回滚不起作用无效(转载)
阅读量:538 次
发布时间:2019-03-09

本文共 954 字,大约阅读时间需要 3 分钟。

@Transactional注解事务不回滚的排查与解决方案

在项目中使用@Transactional注解事务后,遇到异常不回滚的问题确实让人头疼。经过一番排查,我找到了几个关键点,希望能帮到有同样困扰的小伙伴。

一、了解@Transactional的事务特性

  • 注解的使用位置

    @Transactional注解通常建议放在service类上,而不是接口上。这样整个类就被纳入了Spring的事务管理,每个业务方法执行时都会开启一个事务。不过,你得注意,这个注解只能应用在public可见度的方法上。如果方法是protected、private或者package-scoped,虽然不会报错,但事务也不会起作用。这一点是一个常见的错误原因。

  • 异常类型与事务回滚

    Spring默认情况下,对于unchecked异常(比如空指针、除以零等)会进行事务回滚;但对于checked异常(如IOException、TimeoutException等),则不会回滚。所以,确认你抛出的异常类型。如果是checked异常,可以在注解中指定@Transactional(rollbackFor=Exception.class),这样就能确保回滚了。

  • 数据库引擎支持

    在MySQL中,如果使用MyISAM引擎,事务可能不起作用,因为MyISAM不支持事务。所以,必须确认数据库引擎是支持事务的,比如InnoDB。

  • 二、事务传播模式的配置

    确保事务管理器被正确配置,包括注解驱动和组件扫描。通常,配置文件中会有如下内容:

    这样Spring才能扫描到注解并管理事务。

    三、排查事务是否生效

  • 同一类内的方法调用

    在同一个类中调用另一个方法时,若另一个方法没有被@Transactional注解包裹,事务可能不会起作用。所以,确保调用者没有被事务管理器包裹,或者在方法中使用@Transactional方法。

  • 异常是否被捕获

    如果在方法中抛出了异常但没有被正确捕获,事务可能不会回滚。所以,检查异常处理逻辑,确保异常能够被捕获并处理。

  • 通过以上步骤,希望能够解决@Transactional注解事务不回滚的问题。遇到类似问题时,先从注解的使用位置、异常类型、数据库引擎以及事务传播模式入手,逐步排查问题,确保每一步都配置正确。

    转载地址:http://rhmiz.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 实战 | 使用姿态估计算法构建简单的健身训练辅助应用程序
    查看>>
    OpenCV与AI深度学习 | 实战 | 基于YoloV5和Mask RCNN实现汽车表面划痕检测(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 基于YOLOv9+SAM实现动态目标检测和分割(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 基于YOLOv9和OpenCV实现车辆跟踪计数(步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 文本图片去水印--同时保持文本原始色彩(附源码)
    查看>>
    OpenCV与AI深度学习 | 实战—使用YOLOv8图像分割实现路面坑洞检测(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战篇——基于YOLOv8和OpenCV实现车速检测(详细步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战|OpenCV实时弯道检测(详细步骤+源码)
    查看>>
    OpenCV与AI深度学习 | 实践教程|旋转目标检测模型-TensorRT 部署(C++)
    查看>>
    OpenCV与AI深度学习 | 工业缺陷检测中数据标注需要注意的几个事项
    查看>>
    OpenCV与AI深度学习 | 干货 | 深度学习模型训练和部署的基本步骤
    查看>>
    OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 深度学习检测小目标常用方法
    查看>>
    OpenCV与AI深度学习 | 超越YOLOv10/11、RT-DETRv2/3!中科大D-FINE重新定义边界框回归任务
    查看>>
    OpenCV与AI深度学习 | 高效开源的OCR工具:Surya-OCR介绍与使用
    查看>>
    Opencv中KNN背景分割器
    查看>>
    OpenCV中基于已知相机方向的透视变形
    查看>>
    OpenCV中的监督学习
    查看>>
    opencv中读写视频
    查看>>
    opencv之cv2.findContours和drawContours(python)
    查看>>