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();
}
相关推荐
未若君雅裁2 小时前
Spring AOP、日志切面与声明式事务原理
java·后端·spring
椰猫子10 小时前
SpringBoot(简介、基础配置、整合第三方技术)
java·spring boot·spring
Ting-yu11 小时前
Spring AI Alibaba零基础速成(3) ---- ChatClient使用
java·spring·spring cloud·spring ai
IronMurphy13 小时前
Redis拷打第六讲
redis·spring·mybatis
Ting-yu13 小时前
Spring AI Alibaba零基础速成(2) ---- Ollama安装与使用
java·后端·spring·ai
会编程的吕洞宾13 小时前
Spring_Boot_3_3_的___Transactional__
java·后端·spring
那个失眠的夜14 小时前
SpringBoot
java·开发语言·spring boot·spring·mvc·mybatis
多敲代码防脱发14 小时前
Spring进阶(Bean的生命周期与Bean的后处理器)
java·服务器·开发语言·spring boot·spring·servlet
RingWu14 小时前
高并发三板斧-缓存:命中率、一致性、治理
java·spring·缓存
huipeng92614 小时前
基于SpringCloud的博客系统
java·运维·后端·spring·spring cloud·微服务