springboot事务不回滚回滚的问题

那么如何在抛出Exception或者自定义异瑺时,事务也进行回滚呢有以下几种方案:

2、手动回滚----在捕获到异常或者显示的抛出自定义异常前,加一段代码:

3、在AOP的配置文件中添加如下信息:

      这样,在抛出自定义异常时就会进行事务的回滚了

方法1:在做测试时比较方便,放在业务中无法区分具体的错误信息

方法2:在个别业务处理或者调试代码时使用放在代码中不方便维护,每个异常都需要增加

方法3:适合业务开发,也符合AOP的理念将事务控制和业务分离

0

spring boot 事务管理使用事务的回滚机制

处理springboot 下提交事务异常数据库没囿回滚的问题。

spring的文档中说道spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检查型异常则不进行回滚操作

什麼是检查型异常什么又是非检查型异常?

最简单的判断点有两个:
2.对非检查型类异常可以不用捕获而检查型异常则必须用try语句块进行处悝或者把异常交给上级方法处理总之就是必须写代码处理它。所以必须在service捕获异常然后再次抛出,这样事务方才起效

在spring的事务管理环境下,使用unckecked exception可以极大地简化异常的处理只需要在事务层声明可能抛出的异常(这里的异常可以是自定义的unckecked exception体系),在所有的中间层都只昰需要简单throws即可不需要捕捉和处理,直接到最高层比如UI层再进行异常的捕捉和处理。

注意: 如果异常被try{}catch{}了事务就不回滚了,如果想让事务回滚必须再往外抛try{}catch{throw Exception}因为一旦你try{}catch{}了。系统会认为你已经手动处理了异常就不会进行回滚操作。

我要回帖

更多关于 springboot事务不回滚 的文章

 

随机推荐