我正在研究如何使用Spring处理事务,并且问一个带@Transactional
注释的方法@Transactional
在同一对象实例上调用另一个带注释的方法会发生什么?
我知道事务传播defaul水平REQUIRED
,所以如果我有一个method1()
标注有@Transactional
实例的MyObject
那叫一个method2()
(带注释@Transactional
的同一个实例我认为的),下面的REQUIRED
水平,它是通过创建相同的事务执行method1()
。
我的推论是正确的还是我遗漏了一些东西?我不确定如果@Transactional
在同一实例上调用2个方法究竟会发生什么。
怎么运行的?
如果method2()
从method1()
同一个类中调用@Transactional
,则第二个方法的注释将不起作用,因为它不是通过代理调用的,而是直接调用的。只有通过代理(自动装配的Bean或以任何其他方式注入的某些实例)调用时,方法才会通过事务行为得到增强。
但一般来说,如果method1()
和method2()
属于不同的类,并且都使用注释@Transactional
(因此使用REQUIRED
传播),则它们将共享始于的相同事务method1()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句