溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證問題怎么解決

發(fā)布時(shí)間:2022-04-02 16:04:21 來源:億速云 閱讀:176 作者:iii 欄目:移動開發(fā)

這篇文章主要講解了“springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證問題怎么解決”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“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ì)較了),新啟動項(xiàng)目又用到,驗(yàn)證了下,springboot項(xiàng)目下配置兩個(gè)標(biāo)簽就可以了。

2、解決方案

2.1 說明

(1)其實(shí)就兩個(gè)標(biāo)簽,一個(gè)用到啟動類中(@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請求;

springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證問題怎么解決

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

springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證問題怎么解決

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

springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證問題怎么解決

2.4 驗(yàn)證2,有事務(wù)

(1)增加兩個(gè)標(biāo)簽,一個(gè)是啟動類方法上,一個(gè)是tstest方法上。

springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證問題怎么解決

springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證問題怎么解決

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

springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證問題怎么解決

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

springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證問題怎么解決

感謝各位的閱讀,以上就是“springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證問題怎么解決”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對springboot項(xiàng)目事務(wù)標(biāo)簽驗(yàn)證問題怎么解決這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI