REQUIRED:如果存在一个事物,则支持当前事物。如果没有事物则开启一个新的事物。
SUPPORTS:如果存在一个事物,支持当前事物。如果没有事物,则非事物的执行。但是对于事物同步的事务管理SUPPORTS与不使用事物有少许不同。
REQUIRES_NEW:总是开启一个新的事物。如果一个事物已经存在,则将这个存在的事物挂起。
NOT_SUPPORTED:总是非事物的执行,并挂起任何存在的事物。
NEVER:总是非事物的执行,如果存在一个活动事物,则抛出异常。
NESTED:如果一个活动的事物存在,则运行在一个嵌套的事物中。如果没有活动事物,则按TransactionDefinition.PROPAGATION_REQUIRED属性执行。
(嵌套事物一个非常重要的概念就是内层事物依赖于外层事物。外层事物失败时会回滚内层事物所做的动作。而内层事物操作失败并不会引起外层事物回滚)
REQUIRED应该是我们首先得事物传播行为。他能够满足我们大多数的事物要求。