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 的事務傳播機制都工做在同一個事務中。資源