java 配置事务回滚_Spring@Transactional事务回滚

java 配置事务回滚_Spring@Transactional事务回滚Spring中事务分为编程时事务和声明式事务,编程式事务:编程人员通过代码控制事务的开启、回滚、提交,声明式事务:把事务的处理交给spring。使用注解@transactional配置就是声明式事务。基本配置在applicationContext.xml配置文件中1//配置spring的DataSourceTransactionManager事务管理器23class=”org…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Spring中事务分为编程时事务和声明式事务,编程式事务:编程人员通过代码控制事务的开启、回滚、提交,声明式事务:把事务的处理交给spring。使用注解@transactional配置就是声明式事务。

基本配置

在applicationContext.xml配置文件中

1 //配置spring的DataSourceTransactionManager事务管理器

2

3 class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>

4 //指向的数据源

5

6 //配置事务注解驱动

7

然后在需要事务管理的地方加@Transactional 注解。

实现事务回滚需要注意的问题:

1.@Transactional 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上。

2.@Transactional 注解只能应用到 public 可见度的方法上。 如果你在 protected、private 或者 package-visible 的方法上使用 @Transactional 注解,它也不会报错,但是这个被注解的方法将不会展示已配置的事务设置。

3.默认情况下,spring会对unchecked异常进行事务回滚;如果是checked异常则不回滚。

如果事务在try{}catch(Exception e){e.printStackTrace();}中跑,并且catch中只是打印e的话,那么事务不会rollback。因为异常被catch掉了,框架不知道发生了常。

如果想要rollback,

(1)注解上面写明异常类型即可,@Transactional(rollbackFor=Exception.class)

(2)在方法上添加 throws Exception,将方法中出现的异常抛出给spring事务

(3)去掉方法体中的try catch

(4)catch (Exception e) { throw e;}继续向上抛,目的是让spring事务捕获这个异常

除了以上注意的问题,说一下最近遇到的关于多数据源配置事务回滚的问题

在项目中关于事务该配置的也配置了,需要注意的问题也注意了,但有的事务可以出现回滚有的回滚失败,最终问题所在: id相同的事务配置分别配置在两个application.xml文件中,如果多个application.xml有配置,在web.xml中后加载的application.xml中的事务配置会覆盖最先加的application.xml中的事务配置。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179641.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月20日 下午11:46
下一篇 2022年10月21日 上午6:00


相关推荐

  • moya + RxSwift 进行网络请求

    moya + RxSwift 进行网络请求1.关于moya如在OC中使用AFNetworking一般,Swift我们用Alamofire来做网络库.而Moya在Alamofire的基础上又封装了一层:官方说moya有以下特性(我也就信了):编译时检查正确的API端点访问.使你定义不同端点枚举值对应相应的用途更加明晰.提高测试地位从而使单元测试更加容易.2.开始1.创建枚举API就像这样:enumAPIManager{c

    2025年7月1日
    6
  • 基于Apache的反向代理服务器

    基于Apache的反向代理服务器众所周知Apache是目前最优秀的HTTP服务器。实际上它不仅能当作服务器使用,也能够被用来架设代理服务器。本文就如何使用Apache架设HTTP代理服务器进行说明。本文将基于Win32版的Apache2.0.47进行说明。以前的Apache1.x版配置方法稍有不同,但这里不作说明。 首先是Apache的安装。从http://www.apache.org上下载Apache的安装

    2022年10月20日
    4
  • 华为16道经典面试题

    华为16道经典面试题面试过程中 面试官会向应聘者发问 而应聘者的回答将成为面试官考虑是否接受他的重要依据 对应聘者而言 了解这些问题背后的 猫腻 至关重要 本文对面试中经常出现的一些典型问题进行了整理 并给出相应的回答思路和参考答案 读者无需过分关注分析的细节 关键是要从这些分析中 悟 出面试的规律及回答问题的思维方式 达到 活学活用 问题一 请你自我介绍一下 思路 1 这是面试的必考题目 2

    2026年3月27日
    2
  • 算法复杂度详解

    算法复杂度详解算法复杂度详解在本篇文章中你将了解到 O 1 O n O logn O nlogn 的区别及分析方法时间复杂度的优劣对比首先 o 1 o n o logn o nlogn 是用来表示对应算法的时间复杂度 这是算法的时间复杂度的表示 不仅仅用于表示时间复杂度 也用于表示空间复杂度 算法复杂度分为时间复杂度和空间复杂度 其作用 时间复杂度是指执行这个算法所需要的计算工作量 空间复杂度是指执行这个算法所需要的内存空间 O 后面的括号中有一个函数 指明某个算法的耗时

    2026年3月17日
    2
  • aardio部署_aardio

    aardio部署_aardio还是分析 Gcode 代码用的 先前是直接循环获取一行的数据然后解析显示到 listbox 中 现在需要点击任意一行然后进行解析测试 如果没有选中任意一行那么就继续循环解析 listbox 中有这么个函数 win ui ctrl listbox 列表框 n listbox listbox cls 设计时类名 listbox className 运行时类名 listbox clear

    2026年3月20日
    1
  • 层次分析法(AHP)详细步骤

    层次分析法(AHP)详细步骤1.算法简介

    2022年6月27日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号