springboot項目中配置事務,以前透過標籤用過,上個內部項目,因為是在別人程式碼中使用了,發現好像沒起作用(然後因為有框架保證,就沒計較了),新啟動專案又用到,驗證了下,springboot專案下配置兩個標籤就可以了。
(1)其實有兩個標籤,一個用到啟動類別中(@EnableTransactionManagement),另一個就是那裡需要就配置到哪裡(@Transactional);
(2)方案,就隨便找了個以前的測試項目,一個方法中包含:保存一條數據到數據庫中和一個1除以0代碼,然後看下加不加事務標籤有什麼差別;
(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); }
不加交易標籤,程式碼如上。
(1)先清空資料庫;
(2)執行tstest請求;
發現insert程式碼行執行完,資料就存到資料庫中了。
接著執行完成(1/0),雖然報錯程式碼報錯,但是資料庫中資料還是存在的,資料沒有回滾,沒有保持一致性。
(1)增加兩個標籤,一個是啟動類別方法上,一個是tstest方法上。
(2)先清除數據,執行到insert處
發現雖然insert程式碼行執行完成了,但是這時候資料庫中並沒有數據,然後執行完,程式碼報錯,資料回滾,資料庫中並沒有存入數據,說明事務起到到該有的作用,數據回滾了。
以上是springboot專案事務標籤驗證問題怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!