Spring对事务控制的支持统一在TransactionDefinition类中描述,该类有以下几个重要的接口方法:
1. int getPropagationBehavior():事务的传播行为。
2.int getIslocationLevel():事务的隔离级别。
3.int getTimeOut():事务的过期时间。
4.boolean isReadOnly():事务的读/写特性。
Spring支持以下7种事务传播行为:
1.propagation_required:如果当前没有事务,就新建一个事务;如果已经存在一个事务,就加入到这个事务中。这是最常见的选择。
2.propagation_requires_new:新建事务。如果当前存在事务,就把当前事务挂起。
3.propagation_supports:支持当前事务。如果当前没有事务,就以非事务方式执行。
4.propagation_not_supported:以非事务方式执行操作。如果当前存在事务,就把当前事务挂起。
5.propagation_mandatory :使用当前事务。如果当前没有事务,就抛出异常。
6.propagation_never:以非事务方式执行。如果当前存在事务,就抛出异常。
7.propagation_nested:如果当前存在事务,就在事务内执行;如果当前没有事务,就执行与propagation_required类似的操作。
Spring默认的事务传播行为是propagation_required,它适合绝大多数情况。