springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證
1、問題描述
springboot項(xiàng)目中配置事務(wù),以前通過標(biāo)簽用過,上個(gè)內(nèi)部項(xiàng)目,因?yàn)槭窃趧e人代碼中使用了,發(fā)現(xiàn)好像沒起作用(然后因?yàn)橛锌蚣鼙WC,就沒計(jì)較了),新啟動(dòng)項(xiàng)目又用到,驗(yàn)證了下,springboot項(xiàng)目下配置兩個(gè)標(biāo)簽就可以了。
2、解決方案
2.1 說明
(1)其實(shí)就兩個(gè)標(biāo)簽,一個(gè)用到啟動(dòng)類中(@EnableTransactionManagement),另一個(gè)就是那里需要就配置到哪里(@Transactional);
(2)方案,就隨便找了個(gè)以前的測試項(xiàng)目,一個(gè)方法中包含:保存一條數(shù)據(jù)到數(shù)據(jù)庫中和一個(gè)1除以0代碼,然后看下加不加事務(wù)標(biāo)簽有什么區(qū)別;
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);
//報(bào)錯(cuò),回滾
int i = 1/0;
System.out.println(i);
}
2.3 驗(yàn)證1,沒有事務(wù)
不加事務(wù)標(biāo)簽,代碼如上。
(1)先清空數(shù)據(jù)庫;
(2)執(zhí)行tstest請(qǐng)求;

發(fā)現(xiàn)insert代碼行執(zhí)行完,數(shù)據(jù)就存到數(shù)據(jù)庫中了。

接著執(zhí)行完成(1/0),雖然報(bào)錯(cuò)代碼報(bào)錯(cuò),但是數(shù)據(jù)庫中數(shù)據(jù)還是存在的,數(shù)據(jù)沒有回滾,沒有保持一致性。

2.4 驗(yàn)證2,有事務(wù)
(1)增加兩個(gè)標(biāo)簽,一個(gè)是啟動(dòng)類方法上,一個(gè)是tstest方法上。


(2)首先清除數(shù)據(jù),執(zhí)行到insert處

發(fā)現(xiàn)雖然insert代碼行執(zhí)行完成了,但是這時(shí)候數(shù)據(jù)庫中并沒有數(shù)據(jù),然后執(zhí)行完,代碼報(bào)錯(cuò),數(shù)據(jù)回滾,數(shù)據(jù)庫中并沒有存入數(shù)據(jù),說明事務(wù)起到到該有的作用,數(shù)據(jù)回滾了。

到此這篇關(guān)于springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證的文章就介紹到這了,更多相關(guān)springboot事務(wù)標(biāo)簽驗(yàn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot 注解事務(wù)聲明式事務(wù)的方式
- 淺談SpringBoot之事務(wù)處理機(jī)制
- 詳解SpringBoot的事務(wù)管理
- 詳解Springboot事務(wù)管理
- SpringBoot+Dubbo+Seata分布式事務(wù)實(shí)戰(zhàn)詳解
- springboot開啟聲明式事務(wù)的方法
- SpringBoot內(nèi)部調(diào)用事務(wù)不起作用問題的解決方案
- 使用SpringBoot注解方式處理事務(wù)回滾實(shí)現(xiàn)
- SpringBoot事務(wù)使用及回滾實(shí)現(xiàn)代碼詳解
- springBoot service層事務(wù)控制的操作
相關(guān)文章
idea web項(xiàng)目沒有小藍(lán)點(diǎn)的的兩種解決方法
Springboot基礎(chǔ)之RedisUtils工具類
Docker 存儲(chǔ)驅(qū)動(dòng)詳細(xì)介紹
妙用Java8中的Function接口消滅if...else
關(guān)于使用ContextClassLoader遇到的問題
Java8中利用stream對(duì)map集合進(jìn)行過濾的方法

