如果一个@Transactional注释方法在同一对象实例上调用另一个@Transactional注释方法会发生什么?

2 java spring spring-transactions

我正在研究如何Spring处理事务,我问如果一个带@Transactional注释的方法@Transactional在同一个对象实例上调用另一个带注释的方法会发生什么?

我知道事务传播默认级别是REQUIRED这样的,如果我有一个method1()带有该调用@Transactional实例的注释MyObjecta method2()(带注释@Transactional)的相同实例,我认为,在该REQUIRED级别之后,它是在由创建的同一事务上执行的method1().

这是我的推理是正确的还是我错过了什么?我不确定如果@Transactional在同一个实例上调用2个方法会发生什么.

这个怎么运作?

Pre*_*ric 9

如果method2()method1()同一个类中调用@Transactional,则第二个方法的注释将不起作用,因为它不是通过代理调用,而是直接调用.只有通过代理(自动装配的bean或以任何其他方式注入的某个实例)调用时,才会使用事务行为增强方法.

但一般来说,如果method1()并且method2()在不同的类中,并且都使用@Transactional(使用REQUIRED传播)进行注释,那么它们将共享相同的事务method1().

  • Downvoter,关心解释? (5认同)