Spring手动回滚事务

Spring手动回滚事务

    • 场景介绍
    • @Transactional失效的情况
    • 解决方案
      • 实现类增加@Transactional注解
      • 事务方法
    • 配置文件xml

场景介绍

针对项目场景中,并不需要对所有的方法开启事务操作,特别是查询,所以需要针对个别方法(比如批量插入),手动进行事务处理。

@Transactional失效的情况

https://zhuanlan.zhihu.com/p/114461128

解决方案

实现类增加@Transactional注解

@Service
@Transactional
public class xxxService implements IXxxService{
	
}

事务方法

@Transactional(rollbackFor = RuntimeException.class)
public void method(String params) {
    TransactionAspectSupport.currentTransactionStatus().isNewTransaction();
    Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
    try{
        //to do your work
    }catch (Exception e){
        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
        TransactionAspectSupport.currentTransactionStatus().releaseSavepoint(savePoint);
        throw new RuntimeException(e.getMessage());
    }
}

配置文件xml

<!-- 启动Spring对AspectJ注解的支持 -->
    <aop:aspectj-autoproxy proxy-target-class="true"/>

学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:543120397 我们一起学Java!

你可能感兴趣的:(SSM框架)