@Transactional注解的使用:

1、在方法或者类上都可以添加。(如果在类上添加,则此类中的所有方法都会执行事务,不推荐,因为可能后续接手开发的小伙伴添加方法的时候根本不需要执行事务);

2、触发事务回滚有两种方式:

  • a. 方法抛出异常自动进行回滚;如果使用了try catch,要在catch中抛出异常;
  • b. 手动执行回滚:在方法中添加:TransactionAsceptSupport.currentTransactionStatus().setRollBackOnly();
  •     //第1种写法 @Transactional( rollbackFor = {Exception.class} )public String commonMoney(Receipt rpt,Moneyrecord mors){  try{rpt.setState(1);  int a=dao.insert(rpt);  if(a<=0) {return"缴费失败";  }mors.setPric(rpt.getPic());  mors.setExid(rpt.getPid());  mors.setState(1);  boolean tf=mrs.custom(mors);  if(!tf){  return"余额不足";  }  }catch(Exception e){log.error("业务异常" , e)throw new Exception();}return "OK";  }  //第2种写法 @Transactional( rollbackFor = {Exception.class} )public String commonMoney(Receipt rpt,Moneyrecord mors){  rpt.setState(1);  int a=dao.insert(rpt);  if(a<=0) {return"缴费失败";  }mors.setPric(rpt.getPic());  mors.setExid(rpt.getPid());  mors.setState(1);  boolean tf=mrs.custom(mors);  if(!tf){  TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();  return"余额不足";  }  return "OK";  }  

3、推荐在注解上添加@Transactional(rollbackFor = {Exception.class}),如果不加的话,方法默认只会在抛出RuntimeException时执行回滚;

原理:

添加了@Transactional注解的A类在启动后,默认会生成一个B类,复制A类中的所有方法,如果是在A类上添加注解,则B类所有方法都会执行事务;如果只在A类某个方法上添加注解,则B类只会对那个方法执行事务。

@Transactional注解怎么使用?相关推荐

  1. @Transactional注解最容易忽视的三个失效场景!

    @Transactional注解在以下场景中使用,是会失效的,切记! 1.非public方法 spring对注解事务的方法进行校验,修饰符是不是public,不是 public则不会获取@Transa ...

  2. @aspect注解类不生效_springboot:@Transactional注解 VS @Service注解

    1. Transactional注解与Service/Component注解冲突? 之前遇到一个神奇的事情--用Transactional注解的方法,数据处理了一半,后面的数据处理抛出异常后,没有回滚 ...

  3. 一口气说出 6 种 @Transactional 注解的失效场景

    一.事务 事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种. 编程式事务:是指在代码中手动的管理事务的提交.回滚等操作,代码侵入性比较强, ...

  4. spring@Transactional注解事务不回滚不起作用无效的问题处理

    这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚.后来终于找到了原因. 如果你也出现了这种情况,可以从下面开始排查. 一.特性 先来了解一下@Transactio ...

  5. @Transactional注解在什么情况下失效?

    引言 1.@Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功.要么同时失败. 2.使用@Transactional注解时需要注意许 ...

  6. 为什么加了@Transactional注解,事务没有回滚?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 在前天的<事务管理入门>一文发布之后,有读者 ...

  7. java事务不生效场景_springboot中使用@Transactional注解事物不生效的坑

    一:在springboot中使用事物遇到的坑 1.我们知道spring中的事物分为两种:一种是编程式事物,一种是声明式事物.顾名思义,编程式事物是指通过代码去实现事物管理,这里不做过多说明.另一种是声 ...

  8. spring的@Transactional注解详细用法

    概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性. Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型 ...

  9. @getmapping注解的作用_一口气说出6种,@Transactional注解的失效场景

    作者:程序员内点事 引言 昨天公众号粉丝咨询了一个问题,说自己之前面试被问@Transactional注解哪些场景下会失效,一时语塞致使面试失败.所以今天简单的和大家分享一下@Transactiona ...

  10. spring事物配置,声明式事务管理和基于@Transactional注解的使用

    事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性. spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或 ...

最新文章

  1. Android 使用adb 抓取日志信息
  2. merge-two-smerge-two-sorted-listsorted-lists
  3. GStreamer 入门 - Hello,World
  4. ovirt官方安装文档 第三章
  5. Lync Server 2010迁移至Lync Server 2013部署系列 Part18:开启Lync 2013 Mobility
  6. 00_python安装与配置(mac)
  7. PHP收费事件导致用户流失,PHP秒杀系统方案(解决大流量,高并发)
  8. 随想录(elf文件)
  9. 全球首发!惯性导航导论(剑桥大学)第七部分
  10. 自学编程的 6 个误区 【原力计划-打卡挑战】第一周榜单揭晓
  11. 快速排序比较次数_归并排序「从入门到放弃」
  12. freopen()函数文件流重定向和文件流的清除
  13. VMware esxi在线增加Linux LVM硬盘不需重新启动
  14. iis 无法启动计算机,win10系统iis无法启动的详细步骤
  15. 深度学习/机器学习入门基础数学知识整理(八):中心极限定理,一元和多元高斯分布
  16. Java封装、继承、多态、super杂糅在一起的小练习,公司雇员员工工资问题(Employee),练习扩展:创建一个Employee数组,分别创建不同的Employee对象,并打印某个月的工资
  17. 介绍中国传统节日的网页html,中国传统节日介绍:中秋节
  18. 用java编写租车系统代码_java实现租车系统
  19. 缓冲区溢出攻击实验(一)
  20. Pytorch 语义分割DeepLabV3+ 训练自己的数据集

热门文章

  1. kerberos简介
  2. 酷睿i7 8550u属于什么级别 i7 8550u相当于台式机什么CPU
  3. 用Javascript 编写 HTML在线编辑器
  4. CADD课程学习(13)-- 研究蛋白小分子动态相互作用-I(GROMACS)
  5. JavaScript用Math.asin()求反正弦值
  6. c#企业微信在线支付
  7. Android SDK proxy代理加速
  8. mysql 表锁 MDL锁 行锁
  9. windows系统删除无用的服务
  10. QQ和微信止步不前,意味着即时通讯社交应用创业的第2春已来?