aop與spring事務的異常機制

2021-08-21 15:17:21 字數 866 閱讀 6473

今天在做自己的專案的時候,明明在配置檔案中配置了事務管理機制,然後想測試一下事務是否生效,一直不生效

後來發現原來是因為我自己定義的日誌切面把異常抓取了,但是沒有丟擲去

後來就把異常丟擲去就行了,最重要的是

切面裡面丟擲的異常必須是spring註解抓取的子類或者等於它,具體的看下**

@component

@aspect

public class loggingaop", arrays.aslist(proceedingjoinpoint.getargs()));

}object object = proceedingjoinpoint.proceed(proceedingjoinpoint.getargs());

//後置日誌

if(logignore == null || logignore != null && logignore.after()) ", object);

}}catch (throwable throwable) ", arrays.aslist(proceedingjoinpoint.getargs()));

/*** 如果用了事務,那麼異常要拋回給spring自身去處理

* 重要!!! -- 只能丟擲spring註解處理的異常的子類或本類,不能丟擲比它大的異常,否則spring就拿不到了

*/if(transactional != null)

}return false;

}}

因為我做這個切面的時候本身也是用的註解,所以便同時可以拿到spring上面的註解,如果有那個註解

把此時的異常丟擲去給spring註解即可

如果丟擲的異常大於spring的異常,那事務將不會被回滾,切記!!

Spring事務 異常

spring事務 異常 spring的事務實現採用基於aop的 來實現,如果沒有在事務配置的時候註明回滾的checked exception,那麼只有在發生了unchecked exception的時候,才會進行事務回滾。因此在dao層和service層,最好丟擲unckecked exceptio...

Spring 宣告式事務aop

我們故意在乙個方法裡先寫乙個插入,然後在寫乙個刪除語句。其中刪除語句的sql表達錯誤。雖然會報錯 告訴你刪除的sql語句錯誤,但是不會告訴你 插入操作成功了。也就是說 雖然程式因為錯誤沒有執行完,但是有一部分操作還是成功了。明顯不滿足我們的acid原則 原子性 一致性 隔離性 永續性 首先放上myb...

Spring 基於AOP的事務控制

事務是我們在進行資料操作的時候,要操作的事情,是乙個完整的單元,不可再分的。它包括幾個特性 原子性 一致性 可見性 隔離性 在spring容器中,事務是被封裝到事務管理器中,spring事務管理器的介面是org.springframework.transaction.platformtransact...