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();
}
相关推荐
總鑽風29 分钟前
Spring AI实战:快速集成阿里通义千问
java·后端·spring·ai编程
云烟成雨TD37 分钟前
Spring AI 1.x 系列【43】基于标准输入输出 (STDIO) 与服务端推送事件 (SSE) 的 MCP 服务端
java·人工智能·spring
砍材农夫44 分钟前
物联网实战:Spring Boot + Netty 搭建 MQTT平台 | 多协议适配与模块化设计
java·spring boot·后端·物联网·spring
云烟成雨TD1 小时前
Spring AI 1.x 系列【41】接入高德 MCP 服务
java·人工智能·spring
摇滚侠1 小时前
Spring 零基础入门到进阶 IOC 概述 11 - 13
java·后端·spring
糖果店的幽灵11 小时前
Spring AI 从入门到精通-Embedding
人工智能·spring·embedding
宸津-代码粉碎机15 小时前
Spring AI企业级实战|从RAG优化到Agent多工具调度
java·大数据·人工智能·后端·python·spring
Volunteer Technology16 小时前
深入理解HttpSecurity的设计
spring·安全框架
接着奏乐接着舞16 小时前
springcloud skywalking
spring·spring cloud·skywalking
骄马之死17 小时前
Spring 核心知识点(IOC + AOP + 事务)
java·后端·spring