我想知道setPropagationBehavior
到底TransactionTemplate
到底是什么。谁传播给谁?我看到它有很好的文档,但我没有掌握这个PropagationBehavior
的基本概念。
默认值为PROPAGATION_REQUIRED
,这是什么原因?模板是否报告(传播)失败,反之亦然?
有人可以用基本方式解释这里发生了什么,我熟悉数据库术语和交易功能,ACID等。
非常感谢。
答案 0 :(得分:3)
TransactionManager处理应用程序中的事务。 PropagationBehavior是一种如何告诉经理您希望交易如何表现的方法。 TransactionTemplate是一个帮助程序类,可以为您简化此操作。
必需的意思是:
1.如果调用方法已经在事务中,它将使用相同的事务
2.如果调用方法在非事务范围内,它将创建新事务
答案 1 :(得分:2)
传播不是传播失败。 REQUIRED
表示:如果已经有一个事务正在运行,那么在当前事务中进行工作(在模板回调中)。如果没有事务正在运行,请启动一个新事务,在回调中执行工作,然后提交事务(或者如果存在运行时异常则回滚事务)。
在所有情况下,运行时异常总是传播给调用者。它还会导致事务回滚,即使它未由此模板启动。