事务 @Transactional 的 Propagation.REQUIRES_NEW

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/53482960 小经验: 同一个业务类里面 , 即使声明为 Propagation.REQUIRES_NEW也不会新启一个事务。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/53482960

小经验:
同一个业务类里面 , 即使声明为 Propagation.REQUIRES_NEW也不会新启一个事务。必须调用另一个类的Propagation.REQUIRES_NEW方法才行。

如下代码:

@Service
public class A {

    @Autowired
    private OrderApplyMapper orderApplyMapper;

    @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false, rollbackFor = Exception.class)
    public int testB(OrderApply order) {
        return orderApplyMapper.save(order);
    }

    @Transactional
    public void testA(OrderApply order) {
        System.out.println("1111111111111");
        testB(order);
        System.out.println("2222222222222");
        throw new RuntimeException();
    }

}

这2个方法在同一个类中,本身预期结果是testB方法执行成功,testA方法回滚。实际结果是testB也会被回滚。

如果想使 Propagation.REQUIRES_NEW 生效,则需要把testB这个方法单独放到别的类中,然后调用过来。

具体为什么会这样,没有深究,写下来记录一下。

目录
相关文章
|
2月前
|
关系型数据库 Java MySQL
一篇文章学会使用@Transactional
一篇文章学会使用@Transactional
13 0
|
5月前
|
SQL Java 数据库连接
@Transactional
@Transactional
67 0
|
8月前
|
机器学习/深度学习 算法 PyTorch
Back Propagation 反向传播
Back Propagation 反向传播
67 0
|
10月前
|
存储 JSON 数据挖掘
PlistEdit Pro
PlistEdit Pro 是一款为 macOS 设计的属性列表(Plist)编辑器,它可以帮助用户直观且方便地查看、编辑和管理 Plist 文件。Plist 文件是 macOS 和 iOS 操作系统中许多应用程序和系统功能使用的配置文件格式,通常包含键值对、数组和字典等数据结构。
194 0
|
Java 数据库 Spring
Transactional事务传播行为?
Transactional事务传播行为?
Transactional事务传播行为?
|
Java Spring
Springboot 跟着我了解下 事务 @Transactional 默认方式 Propagation.REQUIRED
Springboot 跟着我了解下 事务 @Transactional 默认方式 Propagation.REQUIRED
405 0
Springboot 跟着我了解下 事务 @Transactional 默认方式 Propagation.REQUIRED
|
Java Spring
【小家java】Spring事务嵌套引发的血案---Transaction rolled back because it has been marked as rollback-only(下)
【小家java】Spring事务嵌套引发的血案---Transaction rolled back because it has been marked as rollback-only(下)
【小家java】Spring事务嵌套引发的血案---Transaction rolled back because it has been marked as rollback-only(下)
|
Java 对象存储 Spring
【小家java】Spring事务嵌套引发的血案---Transaction rolled back because it has been marked as rollback-only(上)
【小家java】Spring事务嵌套引发的血案---Transaction rolled back because it has been marked as rollback-only(上)
需要在Transactional注解指定rollbackFor或者在方法中显示的rollback
由Java阿里巴巴规范提示得,今日探究其原因 1. 先看异常的分类 error是一定会回滚的 这里Exception是异常,他又分为运行时异常RuntimeException和非运行时异常 可查的异常(checked exceptions):Exception下除了RuntimeException外的异常 不可查的异常(unchecked exceptions):RuntimeException及其子类和错误(Error) 如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。
3566 0
什么是 SAP Core Data Service Annotation Propagation
什么是 SAP Core Data Service Annotation Propagation
133 0