spring宣告試或註解事物不會滾問題解決

2021-09-24 13:55:51 字數 674 閱讀 4770

1.什麼是spring 註解事物:就是直接在service層的方法上面加上@transactional註解。

什麼是宣告試事物:就是使用spring 的aop配置事物。

2.事物不回滾通常是出現在註解事物或宣告式事物,程式設計式事務一般需要手寫回滾 通常不會出問題。

3.常見的事物不會滾通常有以下幾種情況:

3.1宣告試事物配置的切入點表示式錯誤,沒有切入service中的方法。

3.2service方法中進行了異常捕獲,try catch 後只是列印了異常資訊沒有再丟擲

throw new runtimeexception(e)。spring 事物混回滾預設是執行時異常才回滾(runtimeexception)。
3.3 service方法丟擲的異常不是執行時異常例如exception,事物也不會回滾,事物回滾預設是執行時異常(runtimeexception)。

4.如何解決這種問題

4.1 宣告試事物:spring aop的情況

在配置中增加回滾條件你自己可以定義:

4.2註解式事物:@transactional

@transactional(rollbackfor=exception.class)
4.3 什麼也不修改 在 catch中增加throw new runtimeexception(e)

spring mybatis的註解事物 失效問題

spring mvc 的配置 spring的配置 出現的bug是 spring mvc啟動時的配置檔案,包含元件掃瞄 url對映以及設定freemarker引數,讓spring不掃瞄帶有 service註解的類。為什麼要這樣設定?因為servlet context.xml與service conte...

spring事物註解

spring事物註解 事務的註解如下 transactional propagation propagation.required 其中,propagation有7個常量值,常用的有required和supports,下面是各種值的解釋 propagation required 如果當前沒有事務,就...

spring註解事物,不生效,不回滾,正確配置

spring開發中如果需要加入註解事務,可以進行如下配置。在spring的配置檔案中加入 class org.springframework.jdbc.datasource.datasourcetransactionmanager proxy target class false 在service層...