Java 关于Spring事务传播的问题
我有一个关于Spring事务传播的问题 假设我使用Java 关于Spring事务传播的问题,java,spring,transactions,Java,Spring,Transactions,我有一个关于Spring事务传播的问题 假设我使用@Transactional(propagation=propagation.REQUIRED)来注释方法m1()。当执行逻辑进入m1()时,如果已经有事务,m1()将使用该事务。在m1()之后,事务会怎样?它将结束还是仍然开放?(如果我在另一个方法中调用m1(),调用之后还有其他事情要做) 总之,我想知道当退出带注释的方法时,事务结束还是仍然保持打开状态 非常感谢。传播。必需的(文档化)将创建新事务(如果当前线程不存在),或者将加入现有事务(如
@Transactional(propagation=propagation.REQUIRED)
来注释方法m1()
。当执行逻辑进入m1()
时,如果已经有事务,m1()
将使用该事务。在m1()
之后,事务会怎样?它将结束还是仍然开放?(如果我在另一个方法中调用m1()
,调用之后还有其他事情要做)
总之,我想知道当退出带注释的方法时,事务结束还是仍然保持打开状态
非常感谢。
传播。必需的
(文档化)将创建新事务(如果当前线程不存在),或者将加入现有事务(如果存在)
当方法退出时,事务将完成(如果输入该方法导致创建事务),或者将保持事务打开(如果输入该方法时已存在事务)。换句话说,它是对称的,并将使线程的事务状态保持与输入方法之前相同的状态。嗨,斯塔夫曼,关于我的问题,其他传播级别如何?@Yousui:各种传播级别及其影响都记录在我发布的链接中。谢谢斯塔夫曼,在仔细阅读您的答案并进行一些测试之后,我已经理解了spring事务传播策略。非常感谢您的帮助。@Yousui您可以发布您测试过的场景吗?我在理解所需与所需之间更精细的复杂性方面遇到了困难。我的事务边界是单独定义的,每个操作都是从外部流调用的,因此我基本上应该按顺序查看操作,但我仍然遇到问题。