首頁 >Java >java教程 >springboot專案事務標籤驗證問題怎麼解決

springboot專案事務標籤驗證問題怎麼解決

WBOY
WBOY轉載
2023-05-10 23:28:12956瀏覽

1、問題描述

springboot項目中配置事務,以前透過標籤用過,上個內部項目,因為是在別人程式碼中使用了,發現好像沒起作用(然後因為有框架保證,就沒計較了),新啟動專案又用到,驗證了下,springboot專案下配置兩個標籤就可以了。

2、解決方案

2.1 說明

(1)其實有兩個標籤,一個用到啟動類別中(@EnableTransactionManagement),另一個就是那裡需要就配置到哪裡(@Transactional);

(2)方案,就隨便找了個以前的測試項目,一個方法中包含:保存一條數據到數據庫中和一個1除以0代碼,然後看下加不加事務標籤有什麼差別;

2.2 程式碼說明

(1)controller類別

@ResponseBody
    @GetMapping("/tstest")
    public String tstest() {
        this.userService.tstest();
        return "SUCCESS";
    }

(2)service類別

public void tstest() {
        //保存
        UserEntity userEntity = new UserEntity();
        userEntity.setType(0);
        userEntity.setOpenid("1111");
        insert(userEntity);
	
				//报错,回滚
        int i = 1/0;
        System.out.println(i);
    }

2.3驗證1,沒有交易

不加交易標籤,程式碼如上。

(1)先清空資料庫;

(2)執行tstest請求;

springboot專案事務標籤驗證問題怎麼解決

發現insert程式碼行執行完,資料就存到資料庫中了。

springboot專案事務標籤驗證問題怎麼解決

接著執行完成(1/0),雖然報錯程式碼報錯,但是資料庫中資料還是存在的,資料沒有回滾,沒有保持一致性。

springboot專案事務標籤驗證問題怎麼解決

2.4 驗證2,有交易

(1)增加兩個標籤,一個是啟動類別方法上,一個是tstest方法上。

springboot專案事務標籤驗證問題怎麼解決

springboot專案事務標籤驗證問題怎麼解決

(2)先清除數據,執行到insert處

springboot專案事務標籤驗證問題怎麼解決

發現雖然insert程式碼行執行完成了,但是這時候資料庫中並沒有數據,然後執行完,程式碼報錯,資料回滾,資料庫中並沒有存入數據,說明事務起到到該有的作用,數據回滾了。

springboot專案事務標籤驗證問題怎麼解決

以上是springboot專案事務標籤驗證問題怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除