spring 的事務控制

2021-08-01 21:51:15 字數 516 閱讀 3420

在spring開發過程中,我們用在類上打上@transactional 標籤來宣告當前類是乙個事務來控制的(當然也可以直接放在方法上)。

因為有service間的互相呼叫,導致多個事務操作同一張表的情況,目前解決就是把方法移到同一service中處理。

還有乙個問題就是當service處理過程中報錯,事物回滾不完全,也就是有的表沒有回滾,而我們在開發中遇到uat環境的資料庫極不穩定,就使問題暴露的更加明顯。發生這種問題有兩種情況:

情況一:spring的@transactional 標籤在不配置的情況下,只有在遇到runtimeexception才會回滾。

解決辦法:在標籤後面配置所有exception都回滾,即:@transactional(rollbackfor=exception.class)

情況二:service中有些方法有try catch操作,就使錯誤**捉到,就不會丟擲觸發事務回滾。

解決辦法:這裡可以說是以後開發要注意的,service中不要有try catch操作,都放在controller裡控制。

Spring 事務 事務控制

0 註解 autowire 自動注入 url url b 1 spring專案中事務手動回滾 b transactionaspectsupport.currenttransactionstatus setrollbackonly 或者丟擲異常 transactional rollbackfor pu...

spring 事務控制

事務配置 二 在service加try 導致事務不回滾 註明 一般service不要加 try public class userserviceimpl catch exception e 三 解決方案 方法1 在service不加try,方法2 在 catch語句中最後增加throw new ru...

Spring事務控制

用別名方法b代替 逆向 寫入商品明細 param orderid param invoiceamount transactional rollbackfor exception.class 寫入一條資料 用別名方法c代替 正向 寫入商品明細 param orderid param userid pa...