springboot項目事務標簽驗證
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請求;
發現insert代碼行執行完,數據就存到數據庫中瞭。
接著執行完成(1/0),雖然報錯代碼報錯,但是數據庫中數據還是存在的,數據沒有回滾,沒有保持一致性。
2.4 驗證2,有事務
(1)增加兩個標簽,一個是啟動類方法上,一個是tstest方法上。
(2)首先清除數據,執行到insert處
發現雖然insert代碼行執行完成瞭,但是這時候數據庫中並沒有數據,然後執行完,代碼報錯,數據回滾,數據庫中並沒有存入數據,說明事務起到到該有的作用,數據回滾瞭。
到此這篇關於springboot項目事務標簽驗證的文章就介紹到這瞭,更多相關springboot事務標簽驗證內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- springBoot service層事務控制的操作
- SpringBoot @Autowired註解註入規則介紹
- 詳解Spring中的Transactional屬性
- spring聲明式事務 @Transactional 不回滾的多種情況以及解決方案
- SpringBoot整合Mybatis簡單實現增刪改查