spring容易忽视的事务失效、异步失效场景

本文讨论了Spring框架中,当非事务方法调用事务方法或同步方法调用异步方法时可能出现的事务失效问题,以及异步方法的使用限制。特别关注了同一类中方法调用和不同类调用对事务和异步的影响。
摘要由CSDN通过智能技术生成

spring事务失效场景1:
非事务方法A里调用事务方法B,如果A和B在同一个类中,那么B的事务会失效。
如果A也加上事务,但在A中捕获了B的异常,那么B的事务同样会失效。
但如果A和B不在同一个类里,A无事务,不会影响B的事务,而且A中捕获B的异常,B出现异常时B的事务也不会提交,最后出现org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only。

==========

Spring的@Async异步失效场景1:
方法A调用异步方法B,如果A和B在一个类中,那么B的异步将失效。
Spring的@Async异步失效场景2:
异步方法的返回值只能为void或者Future。
异步方法必须是public方法。
异步方法不要定义为static。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值