支付场景事务失效导致大事件

本文解析了在银行项目中遇到的事务不生效问题,揭示了在同一Service类内,无事务方法调用有事务方法时,后者事务失效的现象。并总结了事务管理的五种常见误区,帮助开发者理解事务的正确使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##事务不生效场景
最近接手了一个银行项目,也是程序员口中的厌恶事项TOP1-接手烂尾项目。
线上一个bug是事务不生效的场景,乍一看本想着是一个@Transactional注解搞定的事,细看发现没那么简单:在同一个service类中,将两个关联表的dml操作放在同一个方法中,该方法的@Transactional注解都正常,关键的是该方法被本类中的另一个方法调用,而这个方法竟然没有设置事务。现整理一下也算是记录一下这个坑:
1.@Transactional事务默认只对不可查一次进行回滚,不可查异常指:RuntimeException及其子类,ERROR;
2.同类class中无@Transactional的A方法调用有@Transactional的B方法,B方法的事务不生效;
3.不同类class中无@Transactional的A方法调用有@Transactional的B方法,B方法的事务生效;
4.同类class中有中@Transactional的A方法调用无@Transactional的B方法,事务会继承到B方法中生效。
5.非public方法,事务不生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值