美文网首页
编程式事务(手动事务)-TransactionTemplate

编程式事务(手动事务)-TransactionTemplate

作者: AC编程 | 来源:发表于2022-11-09 18:45 被阅读0次

一、代码

@Slf4j
public class Test {
    @Resource
    private TransactionTemplate template;

    private void func() {
        template.execute((TransactionCallback<Object>) transactionStatus -> {
            try {
                //保存报名信息
                super.save(activityAttend);

                //存快照信息
                activitySnapshotService.save(activityAttend.getId(), dynamicDetail);
                return true;

            } catch (Exception e) {
                transactionStatus.setRollbackOnly();
                throw new Exception("事务提交失败");
            }
        });
    }
}

其实TransactionTemplate不需要try catch手动回滚,如果代码块里出现异常,TransactionTemplate会自动帮我们回滚(亲测),可以简写成如下:

@Slf4j
public class Test {
    @Resource
    private TransactionTemplate template;

    private void func() {
        template.execute((TransactionCallback<Object>) transactionStatus -> {
             //保存报名信息
                super.save(activityAttend);

                //存快照信息
                activitySnapshotService.save(activityAttend.getId(), dynamicDetail);
                return true;
        });
    }
}

注意:方法上,不要写@Transactional 事务注解

二、使用场景

2.1 MQ

如果在@Transactional 事务注解的方法里,新增/修改了数据,然后发MQ,其他地方要取刚才操作的数据,就存在时差问题,消费MQ的地方取到的是旧数据。

2.2 调用第三方接口

当调用第三方接口时,如果第三方接口返回很慢,则@Transactional方法里的事务就需要等很久才能提交,这样容易消耗数据库的连接数,甚至出现数据库连接数耗尽的情况。

相关文章

  • TransactionTemplate编程式事务用法测试

    TransactionTemplate用法测试 TransactionTemplate 编程式事务,相比于注解事务...

  • Spring 事务配置

    spring支持编程式事务管理和声明式事务管理两种方式 编程式事务:使用TransactionTemplate或者...

  • spring事务管理

    spring支持编程式事务管理和声明式事务管理两种方式。 编程式事务管理使用TransactionTemplate...

  • Spring中事务管理TransactionTemplate和@

    1. Spring支持编程式事务管理TransactionTemplate和声明式事务管理@Transaction...

  • 手写系列之 —— 实现Spring事务注解功能

    Spring事务分为编程式事务和声明式事务,编程式事务是手动控制,声明式事务是利用注解或者配置文件自动实现事务控制...

  • 编程式事务(手动事务)

    一、代码 方法上,不要写@Transactional 事务注解 二、使用场景 2.1 MQ 如果在@Transac...

  • Spring-编程式事务管理

    spring框架提供了两种编程式事务管理方式: 使用TransactionTemplate 直接使用Platfor...

  • Spring事务常识汇总

    上一篇 << >> 事务的分类 a、编程式事务控制【手动控制事务】 Jdbc代码:Conn.setAutoComm...

  • Spring事务的使用5

    Spring事务的使用## 编程式事务### 在一般使用过程中一般不需要手动编程式实现事务管理,不过Spring提...

  • 事务的两种形式

    事务的分类 编程式事务:是指在代码中手动的管理事务,缺点:代码侵入性太强 声明式事务:基于AOP面向切面,将业务与...

网友评论

      本文标题:编程式事务(手动事务)-TransactionTemplate

      本文链接:https://www.haomeiwen.com/subject/jujatdtx.html