##事务不生效场景
最近接手了一个银行项目,也是程序员口中的厌恶事项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方法,事务不生效。
支付场景事务失效导致大事件
最新推荐文章于 2024-12-01 23:54:40 发布