Spring中的事務管理有聲明式事務和編碼式事務兩種。
聲明式事務顧名思義就是采用聲明的方式來處理事務。是指在Spring配置文件中聲明式的處理事務來代替代碼式的處理事務。Spring使用AOP來完成聲明式的事務管理,因而聲明式事務是以方法為單位,而事務管理不侵入開發的組件的一種事務處理方式。
而編碼式事務顯然就是通過應用開發者的事務相關編碼行為完成事務實現的一種處理方式。
聲明式事務
首先定義事務代理如下:











key屬性確定代理應該給哪個方法增加事務行為。這樣的屬性最重要的部份是傳播行為。有以下選項可供使用:
PROPAGATION_REQUIRED--支持當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇。
PROPAGATION_SUPPORTS--支持當前事務,如果當前沒有事務,就以非事務方式執行。
PROPAGATION_MANDATORY--支持當前事務,如果當前沒有事務,就拋出異常。
PROPAGATION_REQUIRES_NEW--新建事務,如果當前存在事務,把當前事務掛起。
PROPAGATION_NOT_SUPPORTED--以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
PROPAGATION_NEVER--以非事務方式執行,如果當前存在事務,則拋出異常。
PROPAGATION_SUPPORTS--支持當前事務,如果當前沒有事務,就以非事務方式執行。
PROPAGATION_MANDATORY--支持當前事務,如果當前沒有事務,就拋出異常。
PROPAGATION_REQUIRES_NEW--新建事務,如果當前存在事務,把當前事務掛起。
PROPAGATION_NOT_SUPPORTED--以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
PROPAGATION_NEVER--以非事務方式執行,如果當前存在事務,則拋出異常。
其次對于事務代理的引用:








這樣如果UserManagerImpl實現中如果含有save*、remove*、update*、query*的方法名,Spring會自動應用其相應配置的事務實現。
編碼式事務
1、TransactionTemplate的事務處理












2、JdbcTemplate的事務處理










