事务回滚方法调用非事务回滚方法,如果非回滚方法发生异常, 非回滚方法里执行的持久化操作会被回滚吗 ?

1. 会被混滚

2,但是指定不会滚的异常类型,就可以避免发生回滚

看代码:

@Transactional(rollbackFor = Exception.class)public void test() {TbLog log = new TbLog();log.setId("3");log.setOperationContent("事物回滚测试:有回滚注解");tbLogService.create(log);test1();}private void test1(){for (int i = 1; i <3 ; i++) {if (i==2){throw new RestClientException("事物回滚测试");}TbLog log = new TbLog();log.setId(String.valueOf(i));log.setOperationContent("事物回滚测试:没注解");tbLogService.create(log);}}

事物回滚方法 test() 调用了不回滚方法test1() , test1()方法会抛出RestClientException异常,测试发现:抛异常后之前所有的持久化操作都发生了回滚;

在做测试:

下面在test()方法的事务里添加不会滚的异常类型RestClientException , 经测试不会发生回滚, 所以你如果想不让他回滚, 可以在事务里指定不回滚的类型, 在不想发生回滚的方法把全部会发生异常的地方,全部抛出指定类型异常就不会,如:RestClientException,就可以避免回滚;

 @Override@Transactional(rollbackFor = Exception.class,noRollbackFor = RestClientException.class)public void test() {TbLog log = new TbLog();log.setId("3");log.setOperationContent("事物回滚测试:有回滚注解");tbLogService.create(log);test1();}private void test1(){for (int i = 1; i <3 ; i++) {if (i==2){throw new RestClientException("事物回滚测试");}TbLog log = new TbLog();log.setId(String.valueOf(i));log.setOperationContent("事物回滚测试:没注解");tbLogService.create(log);}}

或者你想test1()不使用事务,并且不影响test()方法, 可以在方法test1() 上配置挂起事务,(当然推荐这种方法),简单粗暴,一眼明了

这种方法要求test方法调用Spring代理类的test01方法. 就是不能放在一个类里面,需要定义在另一个类里面 并注册进Spring容器

    @Override@Transactional(rollbackFor = Exception.class)public void test() {TbLog log = new TbLog();log.setId("3");log.setOperationContent("事物回滚测试:有回滚注解");tbLogService.create(log);test1();}//挂起事务@Transactional(propagation = Propagation.NOT_SUPPORTED)private void test1(){for (int i = 1; i <3 ; i++) {if (i==2){throw new RestClientException("事物回滚测试");}TbLog log = new TbLog();log.setId(String.valueOf(i));log.setOperationContent("事物回滚测试:没注解");tbLogService.create(log);}}

JAVA 事务回滚方法调用非事务回滚方法相关推荐

  1. Spring事务内方法调用自身事务

    Spring事务内方法调用自身事务 增强的三种方式 ServiceA.java文件: 查看Spring Tx的相关日志: 可以看到只创建了一个事物ServiceA.service方法的事务,但是cal ...

  2. WCF分布式开发常见错误(13):此方法调用的事务被异步中断

    今天WCF事务编程的时候遇到这个错误:The transaction under which this method call was executing was asynchronously abo ...

  3. 为什么静态方法无法直接调用非静态成员变量和方法

    静态方法无法直接调用非静态成员变量和方法 看到这句话,要想到形容的是这样的如下 静态方法里面无法调用非静态变量 下面在写一个对比非静态的方法和静态方法调用变量对比 问题原因 静态变量和静态的方法是属于 ...

  4. spring同一个类中,一个方法调用另外一个注解(@Transactional)方法时,注解失效

    title: "spring同一个类中,一个方法调用另外一个注解(@Transactional)方法时,注解失效" url: "https://wsk1103.githu ...

  5. Spring 事务方法与非事务方法相互调用 @Transactional 注解失效不回滚?

    写这篇文章的初衷呢就是最近遇到了一个Spring事务的大坑.与其说是坑,还不如说是自己事务这块儿太薄弱导致的(自嘲下). 项目环境 Spring Boot 下面开始问题描述,发生的过程有点长,想直接看 ...

  6. Spring事务方法与非事务方法执行相互调用不回滚,你踩过这个坑没?

     作者:西风一任秋 blog.csdn.net/m0_38027656/article/details/84190949 写这篇文章的初衷呢就是最近遇到了一个spring事务的大坑.与其说是坑,还不如 ...

  7. mysql 回滚失败_Mysql非事务表回滚失败的现象

    执行ROLLBACK(回滚)时,如果收到下述消息,表示事务中使用的1个或多个表不支持事务: 警告:某些更改的非事务性表不能被回滚. 这些非事务性表不受ROLLBACK语句的影响. 如果在事务中意外地混 ...

  8. springboot 调用方法事物_SpringBoot 内部方法调用,事务不起作用的原因及解决办法...

    在做业务开发时,遇到了一个事务不起作用的问题.大概流程是这样的,方法内部的定时任务调用了一个带事务的方法,失败后事务没有回滚.查阅资料后,问题得到解决,记录下来分享给大家. 场景 我在这里模拟一个场景 ...

  9. java main方法调用非静态方法_java中main函数怎么调用外部非static方法

    展开全部 方法可以分为静态方法和实例方法 在main函数里调用非static方法(实例方法),那么32313133353236313431303231363533e78988e69d833133336 ...

  10. 自定义工具类Static方法调用业务中Service层方法

    文章目录 前言 一.如何实现? 二.Util工具类实现 代码相关注解 总结 前言 今天需要验证OpenId,来看是否为系统用户,直接封装一个工具类,遇到了调用业务层service的方法.记一次学习笔记 ...

最新文章

  1. npm run mock | npm run dev只能启动一个
  2. 吴杭民:上海的生活成本高过纽约(贪污腐败横行)
  3. maven 包的导入
  4. [Qt入门]消息对话框创建
  5. 中原标准时间对时_GPS对时系统(时间同步系统)应用电子政务
  6. 【算法】希尔排序 推导方法
  7. Android WebService
  8. vijos p1782——借教室(noip2012提高组第2题)
  9. 进一步优化SPA的首屏打开速度(模块化与懒载入) by 嗡
  10. getBoundingClientRect()兼容性处理
  11. Ansible tower 3.7.0-4自动化运维管理安装方法
  12. 分享一个电脑截动图的软件LICEcap
  13. win7升级到win10所遇到的坑
  14. SeaWeedfs 分布式网络文件存储介绍
  15. 管理的常识(2):什么是领导
  16. 数据库 1NF、2NF、3NF、BCNF
  17. ENSP实验六——三层交换机+路由器
  18. linux 内核usleep,Linux的sleep()和usleep()的使用和区别
  19. 金山软件2015校园招聘
  20. 日历日程安排表格calendar

热门文章

  1. 计算广告学中的GFP、GSP和VCG对比
  2. 中国航空标准件市场运行动态分析及十四五发展规划研究报告2022年版
  3. python 修改pdf_使用Python编辑PDF
  4. deepin输入法配置
  5. 网络安全入门基础知识
  6. [资源数据]民族代码
  7. linux系统手机助手,手机助手Linux版下载
  8. HTML网页实训的目的,网页设计实习目的及意义
  9. 一个商品SKU是怎么生成的
  10. MCJE魔改材质包教程