java spring事务父方法、子方法各自回滚问题处理

简介: java spring事务父方法、子方法各自回滚问题处理


java spring事务父方法、子方法各自回滚问题处理


问题描述

service实现类中A方法(父方法)调用B方法(子方法),两个方法均开启事务,且事务各自独立,A方法和B方法均可自行回滚且相互之间各不干扰。


A方法

注解@Transactional(rollbackFor = Exception.class) 开启A方法的事务

image.png

其中: goodsService.importData3();  调用B方法或者采用SpringUtils.getAopProxy(this).importData3(); 调用B方法均可以,这里try  catch B方法异常是为了防止B方法造成的异常影响到A方法的插入

代码如下:

  @Override
  @Transactional(rollbackFor = Exception.class)
  public Map importData(MultipartFile file, String examId, String subjectId, String seasonId){
    Map map = new HashMap(8);
    //插入业务表信息
    Goods goods = new Goods();
    goods.setName("商品002");
    insertGoods(goods);
    map.put("num1",1);
    map.put("num2",2);
    map.put("num3",3);
    System.out.println(1/0);
    try {
      goodsService.importData3();
      SpringUtils.getAopProxy(this).importData3();
    }catch (Exception e) {
      e.printStackTrace();
    }
    return map;
  }


B方法

注解@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)开启B方法的新事务,且A方法与B方法不属于同一个事务

image.png

  @Override
  @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
  public void importData3() {
    Goods goods = new Goods();
    goods.setName("商品003");
    insertGoods(goods);
    System.out.println(1/0);
  }


注:个人测试有效,大家可以作为参考


相关文章
|
19小时前
|
负载均衡 Java 开发者
细解微服务架构实践:如何使用Spring Cloud进行Java微服务治理
【6月更文挑战第30天】Spring Cloud是Java微服务治理明星框架,整合Eureka(服务发现)、Ribbon(客户端负载均衡)、Hystrix(断路器)、Zuul(API网关)和Config Server(配置中心),提供完整服务治理解决方案。通过Eureka实现服务注册与发现,Ribbon进行负载均衡,Hystrix确保服务容错,Config Server集中管理配置,Zuul则作为API入口统一处理请求。理解和使用Spring Cloud是现代Java开发者的关键技能。
13 2
|
1天前
|
Java 应用服务中间件 Maven
ContextLoaderListener在Spring应用中的作用与配置方法
ContextLoaderListener在Spring应用中的作用与配置方法
|
2天前
|
负载均衡 Java API
使用Spring Cloud构建Java微服务架构
使用Spring Cloud构建Java微服务架构
|
2天前
|
存储 NoSQL Java
教程:Spring Boot与RocksDB本地存储的整合方法
教程:Spring Boot与RocksDB本地存储的整合方法
|
2天前
|
Java
深入了解Java中的BigDecimal类及其方法
深入了解Java中的BigDecimal类及其方法
9 1
|
2天前
|
Java 编译器
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
5 1
|
2天前
|
Java 测试技术 数据库连接
解密Java事务传播行为与隔离级别:案例详解与解决方案
解密Java事务传播行为与隔离级别:案例详解与解决方案
5 1
|
2天前
|
监控 Java
优化Java应用的日志记录方法
优化Java应用的日志记录方法
|
2天前
|
设计模式 安全 Java
在Java中实现单例模式的正确方法
在Java中实现单例模式的正确方法
|
2天前
|
Java 编译器 索引
解决Java中的NoSuchElementException异常的常见方法
解决Java中的NoSuchElementException异常的常见方法