摘要:中人為的創(chuàng)建出一個(gè)異常,測(cè)試回滾在中可以被判斷。手工拋出,作用有兩個(gè),使用事務(wù)增強(qiáng),對(duì)事務(wù)回滾。中可以捕獲該異常,并處理,例在前端顯示提示信息。例子結(jié)果說明事務(wù)增強(qiáng)可以通過進(jìn)行事務(wù)增強(qiáng)。事務(wù)發(fā)生回滾時(shí),可以判斷事務(wù)發(fā)生了回滾,并處理。
1 主要處理思路 1.1 思路1
事物回滾,一般拋異常,可以自己手寫一個(gè)異常,根據(jù)異常判斷。事物還是按照 spring 的之前的邏輯。只是,手工拋特定的異常。這樣你就可以捕獲這個(gè)異常給前臺(tái)用戶。
1.2 思路2方法捕獲異常拋出即可,記得方法定義必須拋出異常,否則框架捕獲不到,聲明式事物不起作用。
1.3 總結(jié)我認(rèn)為上述思路在實(shí)現(xiàn)上是統(tǒng)一的。下面給出一個(gè)用偽代碼描述的例子。
MyException: public class MyException extends RuntimeException { public MyException(){ } } Action中: @Autowired public class XAction { @Autowired private XServicexService xService; public String AddXmethod(){ try { xService.addX (x); //將x存入數(shù)據(jù)庫(kù) } catch (MyException e) { System.out.println("service層出異常了...."); //其它處理,例:加上需要在前端顯示的提示信息。 } } } xService中: @Service @Transactional(propagation=org.springframework.transaction.annotation.Propagation.REQUIRED) public class XService{ @Autowired private XDao xDao; public void addX (X x) throws MyException { xDao.addX(x); //人為的創(chuàng)建出一個(gè)異常,測(cè)試回滾在action中可以被判斷。 try { int a =10/0; } catch (Exceptione) { //手工拋出,作用有兩個(gè), //1、使用spring事務(wù)增強(qiáng),對(duì)事務(wù)回滾。 //2、action中可以捕獲該異常,并處理,例:在前端顯示提示信息。 throw new MyException(); } } }
例子結(jié)果說明:
1、事務(wù)增強(qiáng)可以通過SpringAOP進(jìn)行事務(wù)增強(qiáng)。
2、事務(wù)發(fā)生回滾時(shí),Action可以“判斷”事務(wù)發(fā)生了回滾,并處理。
http://www.jb51.net/article/3... (Spring事務(wù)管理只對(duì)出現(xiàn)運(yùn)行期異常進(jìn)行回滾改變默認(rèn)方式)
http://www.cnblogs.com/0201zc...(spring 事務(wù)回滾)
http://blog.csdn.net/gaowenmi... (spring AOP的異常攔截)
http://www.cnblogs.com/zhuawa... (關(guān)于Spring事務(wù)回滾的問題)
https://www.oschina.net/quest... (spring的事務(wù)insert操作怎么判斷是否執(zhí)行成功了還是回滾了)
濟(jì)南java技術(shù)交流群群主隱士的思路與百度用戶mahl8007的思路。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71590.html
摘要:和事務(wù)的關(guān)系關(guān)系型數(shù)據(jù)庫(kù)某些消息隊(duì)列等產(chǎn)品或中間件稱為事務(wù)性資源,因?yàn)樗鼈儽旧碇С质聞?wù),也能夠處理事務(wù)。事務(wù)的傳播特性,,,,,,強(qiáng)制要求要有一個(gè)物理事務(wù)。外圍事務(wù)不會(huì)被內(nèi)部事務(wù)的回滾狀態(tài)影響。不支持當(dāng)前事務(wù)。 Spring和事務(wù)的關(guān)系 關(guān)系型數(shù)據(jù)庫(kù)、某些消息隊(duì)列等產(chǎn)品或中間件稱為事務(wù)性資源,因?yàn)樗鼈儽旧碇С质聞?wù),也能夠處理事務(wù)。 Spring很顯然不是事務(wù)性資源,但是它可...
摘要:使用注解方式簡(jiǎn)單模擬事務(wù)樣例說明數(shù)據(jù)源采用采用持久化采用事務(wù)注解環(huán)境搭建依賴提供的模塊鏈接驅(qū)動(dòng)包配置類聲明式事務(wù)配置類,其中一定要開啟。 使用注解方式簡(jiǎn)單模擬事務(wù) 樣例 說明 數(shù)據(jù)源采用c3p0 采用JdbcTemplate持久化 采用Spring事務(wù)注解 環(huán)境搭建 POM依賴 c3p0 c3p0 0.9.1.2 org.springfram...
摘要:事務(wù)的傳播行為當(dāng)事務(wù)方法被另一個(gè)事務(wù)方法調(diào)用時(shí),必須指定事務(wù)應(yīng)該如何傳播。事務(wù)配置配置文件中關(guān)于事務(wù)配置總是由三個(gè)組成部分,分別是和代理機(jī)制這三部分,無(wú)論哪種配置方式,一般變化的只是代理機(jī)制這部分。 數(shù)據(jù)庫(kù)事務(wù)的隔離級(jí)別 數(shù)據(jù)庫(kù)事務(wù)的隔離級(jí)別有4個(gè),由低到高依次為Read uncommitted 、Read committed 、Repeatable read 、Serializabl...
摘要:前言在接口中規(guī)定了種類型的事務(wù)傳播行為。事務(wù)傳播行為是框架獨(dú)有的事務(wù)增強(qiáng)特性,他不屬于的事務(wù)實(shí)際提供方數(shù)據(jù)庫(kù)行為。本文對(duì)七種事務(wù)傳播行為做詳細(xì)介紹,內(nèi)容主要代碼示例的方式呈現(xiàn)。 前言 Spring在TransactionDefinition接口中規(guī)定了7種類型的事務(wù)傳播行為。事務(wù)傳播行為是Spring框架獨(dú)有的事務(wù)增強(qiáng)特性,他不屬于的事務(wù)實(shí)際提供方數(shù)據(jù)庫(kù)行為。這是Spring為我們提供...
閱讀 3754·2021-11-23 09:51
閱讀 1414·2021-11-10 14:35
閱讀 4048·2021-09-22 15:01
閱讀 1328·2021-08-19 11:12
閱讀 413·2019-08-30 15:53
閱讀 1720·2019-08-29 13:04
閱讀 3461·2019-08-29 12:52
閱讀 3101·2019-08-23 16:14