标记为@Transaciotn的方法之间的区别是调用不标记事务

时间:2016-08-29 16:59:55

标签: spring spring-mvc

我对所有人都有疑问,请帮我解释一下 我有一个标有@Transaction注释的A类,这个类有方法a 我有B类也标记了@Transaction注释,这有方法b
我有没有标记@Transaction注释的C类,这有方法c

*

  1.   

    (呼叫b)和(呼叫c)有什么区别?

  2. *

1 个答案:

答案 0 :(得分:2)

JSON.stringify(req.body); 的默认传播是@Transaction,这意味着,如果事务存在,那么,使用那个,否则创建一个。

因此...

Required ... - >创建事务,因为不存在

... a() - >事务存在,使用那个,@ transaction什么也不做,所以b()b()的交易中运行

...和...

a() ... - >创建事务,因为不存在

... a() - >交易存在,没有c(),因此将使用@Transactional'

因此,两种情况都非常相同。例如,如果a()d()

,则会有所不同

@Transcational(propagation=Propagation.REQUIRES_NEW) ... - >创建事务,因为不存在

.... a() - >交易存在,但d()需要一个新的,所以新建一个