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

用户4296472

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

我知道事务传播defaul水平REQUIRED,所以如果我有一个method1()标注有@Transactional实例的MyObject那叫一个method2()(带注释@Transactional的同一个实例我认为的),下面的REQUIRED水平,它是通过创建相同的事务执行method1()

我的推论是正确的还是我遗漏了一些东西?我不确定如果@Transactional在同一实例上调用2个方法究竟会发生什么

怎么运行的?

普雷德拉格·马里奇(Predrag Maric)

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

但一般来说,如果method1()method2()属于不同的类,并且都使用注释@Transactional(因此使用REQUIRED传播),则它们将共享始于的相同事务method1()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章