1. 程式人生 > >Spring Boot 中使用 @Transactional 註解配置事務管理(轉載)

Spring Boot 中使用 @Transactional 註解配置事務管理(轉載)

事務管理是應用系統開發中必不可少的一部分。Spring 為事務管理提供了豐富的功能支援。Spring 事務管理分為程式設計式和宣告式的兩種方式。程式設計式事務指的是通過編碼方式實現事務;宣告式事務基於 AOP,將具體業務邏輯與事務處理解耦。宣告式事務管理使業務程式碼邏輯不受汙染, 因此在實際使用中宣告式事務用的比較多。宣告式事務有兩種方式,一種是在配置檔案(xml)中做相關的事務規則宣告,另一種是基於 @Transactional 註解的方式。本文將著重介紹基於 @Transactional 註解的事務管理。

需要明確幾點:

1、預設配置下 Spring 只會回滾執行時、未檢查異常(繼承自 RuntimeException 的異常)或者 Error。參考這裡
2、@Transactional 註解只能應用到 public 方法才有效。參考這裡 Method visibility and @Transactional


以下的示例使用的是 mybatis,所以 spring boot 會自動配置一個 DataSourceTransactionManager,我們只需在方法(或者類)加上 @Transactional 註解,就自動納入 Spring 的事務管理了。

簡單的使用方法

只需在方法加上 @Transactional 註解就可以了。

加入 @Transactional 註解,使用預設配置,丟擲異常之後,事務會自動回滾,資料不會插入到資料庫。

@Transactional
@Override
public void save() {
    User user = new User("服部半藏");
    userMapper.insertSelective(user);

    if (true) {
        throw new RuntimeException("save 拋異常了");
    }
}