spring事務加強,事務回滾如何判斷?但願在前端上有個提示

1 主要處理思路

1.1 思路1

事物回滾,通常拋異常,能夠本身手寫一個異常,根據異常判斷。事物仍是按照 spring 的以前的邏輯。只是,手工拋特定的異常。這樣你就能夠捕獲這個異常給前臺用戶。html

1.2 思路2

方法捕獲異常拋出便可,記得方法定義必須拋出異常,不然框架捕獲不到,聲明式事物不起做用。前端

1.3 總結

我認爲上述思路在實現上是統一的。下面給出一個用僞代碼描述的例子。java

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存入數據庫
        } 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);
        
        //人爲的建立出一個異常,測試回滾在action中能夠被判斷。
        try {
            int a =10/0; 
        } catch (Exceptione) {
       
            //手工拋出,做用有兩個,
            //一、使用spring事務加強,對事務回滾。
            //二、action中能夠捕獲該異常,並處理,例:在前端顯示提示信息。
            throw new MyException();
        }
    }
}

例子結果說明:
一、事務加強能夠經過SpringAOP進行事務加強。
二、事務發生回滾時,Action能夠「判斷」事務發生了回滾,並處理。spring

2 參考文獻

http://www.jb51.net/article/3... (Spring事務管理只對出現運行期異常進行回滾改變默認方式)
http://www.cnblogs.com/0201zc...(spring 事務回滾)
http://blog.csdn.net/gaowenmi... (spring AOP的異常攔截)
http://www.cnblogs.com/zhuawa... (關於Spring事務回滾的問題)
https://www.oschina.net/quest... (spring的事務insert操做怎麼判斷是否執行成功了仍是回滾了)
濟南java技術交流羣羣主隱士的思路與百度用戶mahl8007的思路。數據庫

相關文章
相關標籤/搜索