SpringBoot事物無效

2021-08-22 04:32:55 字數 628 閱讀 9269

今天發現使用者註冊的service的事務並沒有起到作用,再丟擲乙個runtimeexception後,並沒有發生回滾,下面是除錯步驟:

1、檢查資料庫的引擎是否是innodb

2、啟動類上是否加入@enabletransactionmanagement註解

3、是否在方法上加入@transactional註解或service的類上是否有@transactional註解

4、方法是否為public

5、是否是因為丟擲了exception等checked異常

然而事務失效都不是這些原因引起的,並且發現其他service的事務都可以正常使用。在檢視列印的異常呼叫鏈的時候,發現這個service是沒有被aop**過的,所以推測可能是因為其他整合spring的框架提前引用了這個service。

為了驗證,新建了乙個service,並且把**copy到新建的類中,測試其事務,發現事務可以正常使用,下面是列印的異常資訊:

從上面可以明顯看到,spring為這個service生成了**類,證明事務是可以正常使用的,並且原service的失效應該是其他的整合spring的框架提前引用造成的。

Springboot 事物管理

spring 事務管理分為程式設計式和宣告式的兩種方式。程式設計式事務指的是通過編碼方式實現事務 宣告式事務基於 aop,將具體業務邏輯與事務處理解耦。宣告式事務管理使業務 邏輯不受汙染,因此在實際使用中宣告式事務用的比較多。宣告式事務有兩種方式,一種是在配置檔案 xml 中做相關的事務規則宣告,另...

spring事物回滾無效

錯誤情況1.錯誤原因 spring沒有掃瞄相應的類,以前掃包都是在springmvc中直接這樣掃了,就能夠將testing下的controller和service那些都交給了spring,其實都是給了springmvc,根本沒有給spring,所以spring完全無法新增事物,解決方法 後台spri...

spring boot 中事物的使用

事務,通俗的說就是,同時做多個事,要麼全做,要麼不做,也是其特性。舉個例子來說,好比你在某寶 某東 某多上購物,在你提交訂單的時候,庫存也會相應減少,不可能是錢付了,庫存不減少,或者庫存減少了,錢沒扣,不是尷尬了。沒描述清楚?那好,我們結合例項,通過 實現,我想往資料庫加兩個學生,如果增加乙個失敗了...