如何彻底解决@Transactional注解事务不回滚的诡异问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1985个文字,预计阅读时间需要8分钟。
这几日在项目中发现,使用`@Transactional`注解后抛出了异常,未能回滚。后来最终找到了原因。如果也遇到了类似情况,可以从以下方面开始排查:
一、特性首先了解`@Transactional`注解的基本特性,它通常用于声明事务管理,确保方法中的操作要么全部成功,要么全部回滚。理解其基本原理有助于定位问题。
这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚。后来终于找到了原因。
如果你也出现了这种情况,可以从下面开始排查。
一、特性
先来了解一下@Transactional注解事务的特性吧,可以更好排查问题
1、service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入spring事务管理,在每个业务方法执行时都会开启一个事务,不过这些事务采用相同的管理方式。
2、@Transactional 注解只能应用到 public 可见度的方法上。 如果应用在protected、private或者 package可见度的方法上,也不会报错,不过事务设置不会起作用。
3、默认情况下,Spring会对unchecked异常进行事务回滚;如果是checked异常则不回滚。
本文共计1985个文字,预计阅读时间需要8分钟。
这几日在项目中发现,使用`@Transactional`注解后抛出了异常,未能回滚。后来最终找到了原因。如果也遇到了类似情况,可以从以下方面开始排查:
一、特性首先了解`@Transactional`注解的基本特性,它通常用于声明事务管理,确保方法中的操作要么全部成功,要么全部回滚。理解其基本原理有助于定位问题。
这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚。后来终于找到了原因。
如果你也出现了这种情况,可以从下面开始排查。
一、特性
先来了解一下@Transactional注解事务的特性吧,可以更好排查问题
1、service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入spring事务管理,在每个业务方法执行时都会开启一个事务,不过这些事务采用相同的管理方式。
2、@Transactional 注解只能应用到 public 可见度的方法上。 如果应用在protected、private或者 package可见度的方法上,也不会报错,不过事务设置不会起作用。
3、默认情况下,Spring会对unchecked异常进行事务回滚;如果是checked异常则不回滚。

