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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PHP实现一个简单的图书管理系统

    PHP实现一个简单的图书管理系统刚刚我收到了一个消息,老师竟然布置了一个课设,要求做一个后台管理系统。做归做,但是!本着为老师节省时间的心态,我花了大量的时间,消耗了无数脑细胞扫描了一遍老师给的课题,最终掐指一算选了一个最简单的——>"图书管理系统"。刚开始我的想法是用jsp+(struts2+spring+hibernate)+Oracle写的,毕竟以前也用这玩意写过类似的东西,等我打开Oracl…

    2022年5月31日
    34
  • 解决:Could not find debuginfo pkg for dependency package glibc-2.12-1.132.el6_5.3.i686

    解决:Could not find debuginfo pkg for dependency package glibc-2.12-1.132.el6_5.3.i686

    2022年1月19日
    65
  • TCP协议和UDP协议

    TCP协议和UDP协议1.传输控制协议TCP1.1TCP的主要特点:1.1.1面向连接的运输层协议socket部分讲述tcp连接的建立tcp连接的释放tcp的有限状态机1.1.2每一条TCP连接只能有两个端点,每一条TCP链接只能是点对点的(一对一)1.1.3TCP提供可靠交付的服务可靠传输的工作原理可靠传输的实现流量控制拥塞控制1.1.4TCP提供全双工通信1.1.5面向字节流流式服务的特点1.2与TCP有关的面试问题2.用户数据报协议UDP2.1UDP协

    2022年6月7日
    42
  • webstorm激活码最新【中文破解版】

    (webstorm激活码最新)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月28日
    48
  • unity安装使用教程_免费版签名

    unity安装使用教程_免费版签名1、进入Unity官网,滑动到最底部,点击“所有版本”:

    2022年4月19日
    70
  • CEGUI 动画

    CEGUI 动画最新的版本支持动画,使用Animation类.项目中使用的是7.1的版本,不支持动画,leader说不使用最新版本的CEGUI库,就使用7.1,无奈,自己写一个动画类吧.CEGUI中播放动画是将一个动画的每帧连续不断的画到屏幕上,就形成了动画.就像小时候在书的边页上面画的小人,每一页都画一个小人,每个小人的动作都有点不同,这样快速翻书的时候,小人就成了动画.源代码如最后所贴,原理性的东西就不多讲,…

    2022年7月24日
    12

发表回复

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

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