我对 Spring 交易传播有疑问。如果我使用 @Transactional(propagation = Propagation.REQUIRED)来注释方法m1。当执行逻辑输入m1时,如果已经有事务,则m1将使用该事务。在m1之后,交易如何?它结束还是仍然打开?(如果我在另一个方法中调用m1,并且在调用之后还有其他事情要做)。
总之,我想知道退出带注释的方法时,事务结束还是仍然打开?
太谢谢了。
最佳答案
Propagation.REQUIRED
(记录在案的here)将创建一个新事务(如果当前线程不存在此事务),或将加入一个现有事务(如果存在)。
当方法退出时,事务将完成(如果进入方法导致创建事务),或者将事务保持打开状态(如果在输入方法时已经存在事务)。换句话说,它是对称的,并且将使线程的事务状态保持与输入方法之前的状态相同。