当前位置: 首页 > java >正文

Spring事务失效场景

1.非public修饰

在这里插入图片描述
Spring事务是通过动态代理实现的,非public修饰的方法不能被代理。

2.用final修饰

final修饰的方法不能被重写

3.自己捕获异常的也不可以

Spring 事务默认仅在抛出未捕获的 RuntimeException 或 Error时回滚。若异常被try-catch捕获且未重新抛出,事务不会回滚。
但是想要捕获其他异常可以自己指定。@Transactional(rollbackFor = NullPointerException.class)

4.异常类型不匹配

若指定了rollbackFor属性,但实际抛出的异常不在指定范围内,事务不会回滚。默认仅回滚RuntimeException和Error, checked 异常(如IOException)不回滚。

5.同一个类方法调用

Spring 事务基于代理实现,同一类内的方法互相调用时,不会经过代理对象,导致事务注解失效。

@Service
public class OrderService {public void createOrder() {// 同一类内调用,updateStatus()的事务不生效this.updateStatus(); }@Transactionalpublic void updateStatus() {// ...}
}

6.数据库不支持事务

7.事务传播行为设置不当

错误的传播行为可能导致事务不生效。例如,PROPAGATION_SUPPORTS(若当前无事务则以非事务方式执行)、PROPAGATION_NOT_SUPPORTED(强制非事务执行)等。

http://www.xdnf.cn/news/16915.html

相关文章:

  • Python 全局解释器锁
  • Web前端实现银河粒子流动特效的3种技术方案对比与实践
  • 使用C++实现日志(1)
  • 淘宝小程序的坑
  • 华为核心交换机S7700的内存OID
  • 阿里云:Ubuntu系统部署宝塔
  • JavaScript将String转为base64 笔记250802
  • Jotai:React轻量级原子化状态管理,告别重渲染困扰
  • Unity_数据持久化_XML基础
  • 计数组合学7.11(RSK算法)
  • 2024年网络安全预防
  • 仿muduo库实现高并发服务器
  • Python----大模型(基于LLaMA Factory角色扮演模型微调)
  • Kubernetes容器运行时-Docker or Containerd
  • 【最后一个单词的长度】
  • RK3399 启动流程 --从复位到系统加载
  • 双网卡UDP广播通信机制详解
  • Leetcode 11 java
  • fastGEO v1.7.0 大更新,支持PCA、差异分析、火山图、热图、差异箱线图、去批次等分析
  • uniapp 富文本rich-text 文本首行缩进和图片居中
  • Flutter开发 dart语言基本语法
  • 基于单片机一氧化碳CO检测/煤气防中毒检测报警系统
  • 深入理解 Docker 容器网络:为什么用 host 网络模式能解决连通性问题?
  • Vue3 setup的两个注意点
  • Spring AI MCP 技术深度解析:从工具集成到企业级实战
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现道路车辆事故的检测识别(C#代码UI界面版)
  • LeeCode 88. 合并两个有序数组
  • RAGFLOW~Enable RAPTOR
  • 亚像素级精度的二维图像配准方法
  • 上海月赛kk