spring手动回滚

1.在trycatch捕获后根据业务需要我们手动回滚事务。

2.手动回滚事务代码

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()

3.但是我加上之后报出了一下错误

No transaction aspect-managed TransactionStatus in scope

4.经查询资料大部分都是说方法或者业务类上未加@Transaction注解,但是我加了还是会报错

5.后使用AopUtils.isAopProxy(Object object)发现这个类未被aop代理导致事务失效。

6.因项目原因,怎么被代理情况不一样,自寻选择

7.手动回滚可配合回滚点使用,设置回滚点

Object point = TransactionAspectSupport.currentTransactionStatus().createSavepoint();

8.回滚到事务点

TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);

9.如何trycatch捕获异常后回滚数据并保存错误日志记录到日志表中

1.个人想到的是使用事物的传播机制 REQUIRED,REQUIRES_NEW
2.REQUIRED:如果有事务就加入事务,如果没有则新建事务
3.REQUIRES_NEW:不管有没有事务都新建事务,将原先事务挂起。
4.但由于在同一service层事务失效的原因,需要在日志service层保存日志。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论

打赏作者

优秀哥

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值