iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >spring如何实现事务异常回滚
  • 464
分享到

spring如何实现事务异常回滚

2023-05-30 16:05:29 464人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关spring如何实现事务异常回滚,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。为了打印清楚日志,很多方法我都加tyrcatch,在catch中打印日志。但是这边情况来了,当这个

这篇文章将为大家详细讲解有关spring如何实现事务异常回滚,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

为了打印清楚日志,很多方法我都加tyrcatch,在catch中打印日志。但是这边情况来了,当这个方法异常时候日志是打印了,但是加的事务却没有回滚。

例:

类似这样的方法不会回滚(一个方法出错,另一个方法不会回滚):

if(userSave){       try {         userDao.save(user);         userCapabilityQuotaDao.save(capabilityQuota);        } catch (Exception e) {         logger.info("能力开通接口,开户异常,异常信息:"+e);        }      }

下面的方法回滚(一个方法出错,另一个方法会回滚):

if(userSave){        try {         userDao.save(user);         userCapabilityQuotaDao.save(capabilityQuota);         } catch (Exception e) {         logger.info("能力开通接口,开户异常,异常信息:"+e);         throw new RuntimeException();        }     }

或者:

if(userSave){       try {         userDao.save(user);         userCapabilityQuotaDao.save(capabilityQuota);       } catch (Exception e) {         logger.info("能力开通接口,开户异常,异常信息:"+e);         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();       }      }

为什么不会滚呢??是对spring的事务机制不明白。!!

*****默认spring事务只在发生未被捕获的runtimeexcetpion时才回滚。******

springaop异常捕获原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行回滚,默认情况下aop只捕获runtimeexception的异常,但可以通过。

配置来捕获特定的异常并回滚

换句话说在service的方法中不使用trycatch或者在catch中最后加上thrownewruntimeexcetpion(),这样程序异常时才能被aop捕获进而回滚

解决方案:

方案1.例如service层处理事务,那么service中的方法中不做异常捕获,或者在catch语句中最后增加thrownewRuntimeException()语句,以便让aop捕获异常再去回滚,并且在service上层(WEBservice客户端,view层action)要继续捕获这个异常并处理

方案2.在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,这样上层就无需去处理异常(现在项目的做法)

关于“spring如何实现事务异常回滚”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: spring如何实现事务异常回滚

本文链接: https://www.lsjlt.com/news/219850.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • spring如何实现事务异常回滚
    这篇文章将为大家详细讲解有关spring如何实现事务异常回滚,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。为了打印清楚日志,很多方法我都加tyrcatch,在catch中打印日志。但是这边情况来了,当这个...
    99+
    2023-05-30
  • Spring事务回滚异常怎么解决
    当Spring事务回滚异常时,可以尝试以下解决方法: 检查代码逻辑:首先检查代码逻辑是否正确,是否在事务范围内执行了可能导致异常...
    99+
    2024-03-01
    Spring
  • Spring事务管理中的异常回滚是什么
    目录前言问题场景Spring 管理事务的原理MySQL中的事务管理JDBC中的事务管理Spring中的事务管理Spring中的事务接口到底回滚还是不回滚简明答案什么是执行事务的方法什...
    99+
    2023-02-09
    Spring事务管理异常回滚 Spring异常回滚 Spring事务管理中的异常回滚
  • Spring事务捕获异常后依旧回滚的解决
    目录前沿问题阐述知识点前置条件问题追踪总结前沿 一段生产事故发人深省,在Spring的声明式事务中手动捕获异常,居然判定回滚了,这是什么操作?话不多说直接上代码 @Service p...
    99+
    2024-04-02
  • Django事务回滚如何实现
    这篇文章主要介绍“Django事务回滚如何实现”,在日常操作中,相信很多人在Django事务回滚如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Django事务回滚如何实现”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • Spring事务管理中的异常回滚案例分析
    这篇文章主要介绍了Spring事务管理中的异常回滚案例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring事务管理中的异常回滚案例分析文章都会有所收获,下面我们一起来看看吧。问题场景某项目系统中,se...
    99+
    2023-07-05
  • 怎么在Spring中利用@Transactional实现事务回滚
    今天就跟大家聊聊有关怎么在Spring中利用@Transactional实现事务回滚,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、使用场景举例在了解@Transactional怎...
    99+
    2023-05-30
    spring transactional
  • 详解Java子线程异常时主线程事务如何回滚
    一、提出问题 最近有一位朋友问了我这样一个问题,问题的截图如下: 这个问题问的相对比较笼统,我来稍微详细的描述下:主线程向线程池提交了一个任务,如果执行这个任务过程中发生了异常,...
    99+
    2024-04-02
  • jdbc回滚事务怎么实现
    JDBC中回滚事务的实现可以通过以下步骤完成: 首先,确保数据库连接已经开启了事务。可以通过设置连接的自动提交属性为false来实...
    99+
    2023-10-26
    jdbc
  • 详解Spring事务回滚和事务提交
    目录事务回滚事务提交事务回滚 回滚逻辑如下: 判断是否存在事务,只有存在事务才执行回滚 根据异常类型判断是否回滚。如果异常类型不符合,仍然会提交事务 回滚处理 ...
    99+
    2024-04-02
  • SpringBoot数据层测试事务回滚如何实现
    本文小编为大家详细介绍“SpringBoot数据层测试事务回滚如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot数据层测试事务回滚如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。数...
    99+
    2023-07-04
  • 如何实现Spring Event(异步事件)
    目录一、叙述Spring的事件需要遵循如下流程Spring框架中事件二、上Demo示例1. pom文件2. 自定义一个事件继承ApplicationEvent3. 自定义一个监听器实...
    99+
    2023-02-14
    Spring Event Spring Event 异步事件 Spring异步事件
  • Django 事务回滚的具体实现
    目录一、事务的四大特性二、数据库事务2.1使用装饰器(整体回滚,不处理异常)2.2使用with语句(部分回滚,不处理异常)2.3使用with语句(部分回滚,可以处理异常)2.4使用保...
    99+
    2023-02-20
    Django 事务回滚
  • C#在EntityFramework中实现事务回滚
    在使用Entity Framework为主从表添加数据,当一个表添加数据成功,另一个表添加数据失败,这时候就需要用到事务回滚。 比如有以下关系的2张表。 客户端使用Transact...
    99+
    2024-04-02
  • 实现mybatis事务回滚的方法
    今天就跟大家聊聊有关实现mybatis事务回滚的方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。解决方法:将DataSource配置改为AutoCommit(false)将conn...
    99+
    2023-06-06
  • 关于SpringBoot的异常回滚和事务的使用详解
    目录Springboot中事务的使用:开启事务的方法中事务回滚的情况:Springboot @Transactional 事务不回滚一、异常捕获的原因二、数据库引擎不支持回滚(使用M...
    99+
    2023-05-19
    SpringBoot异常回滚 SpringBoot事务
  • php中mongodb事务回滚怎么实现
    在PHP中,MongoDB并不支持原生的事务处理。但是可以通过编写一些逻辑来模拟事务回滚的功能。以下是一个简单的示例: // 连接M...
    99+
    2024-04-12
    php mongodb
  • mongoDB 4.0中怎么实现事务回滚
    本篇文章为大家展示了mongoDB 4.0中怎么实现事务回滚,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.准备工作升级mongodb至4.0.0$ b...
    99+
    2024-04-02
  • java手动回滚事务怎么实现
    在 Java 中,我们可以使用 JDBC 中的 Connection 对象来手动回滚事务。下面是一个简单的示例: Connectio...
    99+
    2024-03-07
    java
  • 关于Spring中@Transactional事务回滚的注意事项
    目录一、Spring 默认事务1.1、抛出 unchecked 和 checked 异常都回滚1.2、总结二、使用 Spring中 @Transactional 注解的注意事项一、S...
    99+
    2023-05-19
    Spring @Transactional Spring 事务回滚
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作