Spring 对事务控制的支持统一在 TransactionDefinition 类中描述,该类有如下几个重要的接口方法:框架
DefaultTransactionDefinition能够看到默认配置,spa
private int propagationBehavior = PROPAGATION_REQUIRED;代理
除了事务的传播行为外,事务的其它特性 Spring 是借助底层资源的功能来完成的,Spring 无非只充当个代理的角色。可是事务的传播行为倒是 Spring 凭借自身的框架提供的功能,是 Spring 提供给开发者最珍贵的礼物。接口
所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。Spring 支持 7 种事务传播行为:事务
Spring 默认的事务传播行为是 PROPAGATION_REQUIRED,它适合于绝大多数的状况。假设 ServiveX#methodX() 都工做在事务环境下(即都被 Spring 事务加强了),假设程序中存在以下的调用链:Service1#method1()->Service2#method2()->Service3#method3(),那么这 3 个服务类的 3 个方法经过 Spring 的事务传播机制都工做在同一个事务中。资源