TransactionTemplate是Spring框架中的一个类,用于编程式地管理事务。它允许开发者在方法内定义事务范围,以确保在方法执行期间的数据库操作要么全部成功提交,要么全部回滚。TransactionTemplate提供了一种更灵活、更细粒度的事务控制方式,适用于各种场景。
在Spring Boot中,通常有两种事务管理的方式:声明式事务管理和编程式事务管理。声明式事务管理是通过注解或XML配置来定义事务行为,而编程式事务管理是通过代码来实现事务控制。
使用TransactionTemplate的好处在于,它使得事务管理更加灵活,可以更细粒度地控制事务的开始、提交和回滚。这对于某些特定需求的应用程序非常有用,例如需要在方法内部处理多个事务的嵌套情况。
有返回值
java
public class TestService {
    @Autowired
    private TransactionTemplate transactionTemplate;
    public void performTransaction() {
        // 在这里执行事务性操作
        // 操作成功则事务提交,否则事务回滚
        transactionTemplate.execute(status -> {
            try {
                // 事务性操作
                // 如果操作成功,不抛出异常,事务将提交
            } catch (Exception e) {
                // 如果操作失败,抛出异常,事务将回滚
                status.setRollbackOnly();
            }
            return null;
        });
    }
}
无返回值
javapublic void update(String str) {
         /*
         *  执行无返回值的事务管理
         */
        transactionTemplate.execute(new TransactionCallbackWithoutResult() {
            @Override
            protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {
                try {
                    // ....  业务代码
                } catch (Exception e){
                    //回滚
                    transactionStatus.setRollbackOnly();
                }
            }
        });
}
或者使用TransactionAspectSupport
java
public void update(String str) {
         /*
         *  执行切面方式的回滚
         */
       
         @Override
         @Transaction
         protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {
           try {
                 // ....  业务代码
           } catch (Exception e){
                    //回滚
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
           }
      }
        
}
本文作者:Weee
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!