這篇文章將為大家詳細講解有關Spring中如何進行日常Bug排查,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創新互聯建站致力于互聯網網站建設與網站營銷,提供網站設計、成都網站制作、網站開發、seo優化、網站排名、互聯網營銷、小程序開發、公眾號商城、等建站開發,創新互聯建站網站建設策劃專家,為不同類型的客戶提供良好的互聯網應用定制解決方案,幫助客戶在新的全球化互聯網環境中保持優勢。
日常Bug排查系列都是一些簡單Bug排查,筆者將在這里介紹一些排查Bug的簡單技巧,同時順便積累素材^_^。
最近有人反映java應用操作數據庫的時候,拋異常不回滾。這還了得,不過筆者篤定肯定是用法的鍋,不然就全亂套了。所以筆者去Review他的代碼。
@Transacion(value="x") public void s1() throw MyException{ update(1); throwBusinessException(); update(2); }乍看上去沒啥問題。
筆者用@Transaction注解也用了好幾年了,從來沒遇到過拋異常不回滾的情況。看他的用法也和筆者差不多呀?
然后筆者稍微思索了會,發現我寫的代碼和出問題的這一段稍稍有些不一樣。我是這么寫的:
@Transacion(value="transManager") public void s1(){ update(1); update(2); }貌似我從來沒有在函數上加過throw MyException,難道是這段有問題?翻看MyException代碼,發現它僅僅繼承了Exception。
class MyEception extends Exception { }好像就這點不一樣。而筆者自定義的Exception基本繼承了RuntimeException的。
按照這個思路,筆者去翻了下Spring的源碼,看下它在聲明式事務中的處理邏輯到底是什么,于是翻到了這一段處理事務異常的代碼:
TransactionAspectSupport.java protected void completeTransactionAfterThrowing(TransactionInfo txInfo, Throwable ex) { if (txInfo.transactionAttribute.rollbackOn(ex)) { }else{ // We don't roll back on this exception. // Will still roll back if TransactionStatus.isRollbackOnly() is true. // 在checkedException的時候,不會被rollBack,會commit!!! } } @Override public boolean rollbackOn(Throwable ex) { return (ex instanceof RuntimeException || ex instanceof Error); }關于“Spring中如何進行日常Bug排查”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
網站題目:Spring中如何進行日常Bug排查
鏈接分享:http://www.yijiale78.com/article26/ihdojg.html
成都網站建設公司_創新互聯,為您提供網站設計、網站維護、網站收錄、域名注冊、全網營銷推廣、網站導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯