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();
}
相关推荐
EmpressBoost5 小时前
谷粒商城170缓存序列化报错
java·spring·缓存
fouryears_234175 小时前
@PathVariable与@RequestParam的区别
java·spring·mvc·springboot
萌新小白的逆袭6 小时前
《Maven 核心基础笔记(第一天)》
java·开发语言·spring
秋千码途6 小时前
小架构step系列26:Spring提供的validator
java·spring·架构
fouryears_234177 小时前
什么是JSON,如何与Java对象转化
java·spring boot·spring·json
Code季风10 小时前
Spring AOP 与事务管理进阶:传播行为原理与实战指南
java·spring boot·spring
菠萝催学12311 小时前
日志配置Slf4j
java·数据库·spring·tomcat·maven·intellij-idea
喝可乐的希饭a11 小时前
Spring 策略模式实现
java·spring·策略模式
武子康18 小时前
Java-82 深入浅出 MySQL 内部架构:服务层、存储引擎与文件系统全覆盖
java·开发语言·数据库·学习·mysql·spring·微服务
❀͜͡傀儡师21 小时前
OAuth 2.0 安全最佳实践 (RFC 9700) password 授权类型已经不推荐使用了,将在计划中移除
spring·security·oauth2·oauth 2.0