Spring之事务管理方式

Spring支持两种方式的事务管理

1.编程式事务管理

通过 TransactionTemplate或者TransactionManager手动管理事务,实际应用中很少使用,但是对于你理解 Spring 事务管理原理有帮助。

使用TransactionTemplate 进行编程式事务管理的示例代码如下:

复制代码
@Autowired
private TransactionTemplate transactionTemplate;
public void testTransaction() {

        transactionTemplate.execute(new TransactionCallbackWithoutResult() {
            @Override
            protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {

                try {

                    // ....  业务代码
                } catch (Exception e){
                    //回滚
                    transactionStatus.setRollbackOnly();
                }

            }
        });
}

使用 TransactionManager 进行编程式事务管理的示例代码如下:

复制代码
@Autowired
private PlatformTransactionManager transactionManager;

public void testTransaction() {

  TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition());
          try {
               // ....  业务代码
              transactionManager.commit(status);
          } catch (Exception e) {
              transactionManager.rollback(status);
          }
}

2.声明式事务管理

推荐使用(代码侵入性最小),实际是通过 AOP 实现(基于@Transactional 的全注解方式使用最多)。

使用 @Transactional注解进行事务管理的示例代码如下:

复制代码
@Transactional(propagation = Propagation.REQUIRED)
public void aMethod {
  //do something
  B b = new B();
  C c = new C();
  b.bMethod();
  c.cMethod();
}
相关推荐
赛姐在努力.20 小时前
Spring DI详解--依赖注入的三种方式及优缺点分析
java·mysql·spring
孤独的人21 小时前
WordPress 性能优化:从插件到 CDN 的全方位缓存设置指南
spring·缓存·性能优化
ponnylv1 天前
深入剖析Spring Boot启动流程
java·开发语言·spring boot·spring
沙白猿1 天前
【 苍穹外卖 | Day2】
spring
爱吃烤鸡翅的酸菜鱼2 天前
【Spring】原理:Bean的作用域与生命周期
后端·spring
掘根2 天前
【CMake】缓存变量
java·后端·spring
雾里华2 天前
Spring AOP深度解析:从实现原理到最佳实践
spring
╭╰4022 天前
苍穹外卖优化-续
java·spring·mybatis
Dorcas_FE2 天前
axios请求缓存与重复拦截:“相同请求未完成时,不发起新请求”
前端·spring·缓存
南部余额2 天前
Spring 基于注解的自动化事务
java·spring·自动化