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

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.lryc.cn/news/608269.html

相关文章:

  • kotlin小记(1)
  • 集合框架(重点)
  • linux ext4缩容home,扩容根目录
  • 网络安全基础知识【6】
  • Ext系列文件系统
  • 【软考中级网络工程师】知识点之级联
  • 错误处理_IncompatibleKeys
  • 企业资产|企业资产管理系统|基于springboot企业资产管理系统设计与实现(源码+数据库+文档)
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第6章 锁
  • 在linux(ubuntu)服务器上安装NTQQ并使用
  • junit中@InjectMocks作用详解
  • Redisson高并发实战:Netty IO线程免遭阻塞的守护指南
  • 零基础 “入坑” Java--- 十六、字符串String 异常
  • wxPython 实践(六)对话框
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频摘要生成与智能检索优化进阶(377)
  • ARMv8/v9架构FAR_EL3寄存器介绍
  • 图漾AGV行业常用相机使用文档
  • UE5 Insight ProfileCPU
  • MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
  • 【高等数学】第七章 微分方程——第七节 常系数齐次线性微分方程
  • Flutter开发 dart语言基本语法
  • [BJDCTF2020]EasySearch
  • 错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException
  • 谷歌开源Agent框架ADK快速入门
  • 【Conda】配置Conda镜像源
  • 无人机数字图传技术的前沿探索与应用
  • 自动布局视图来实现聊天室的界面
  • AI Agent开发学习系列 - LangGraph(3): 有多个输入的Graph
  • 小智服务器Java安装编译(xinnan-tech)版
  • 算法: 字符串part02: 151.翻转字符串里的单词 + 右旋字符串 + KMP算法28. 实现 strStr()