Spring AOP環繞異常影響的報錯
阿新 • • 發佈:2019-05-11
最近遇到一個問題,異常是:
java.lang.ClassCastException: org.springframework.http.ResponseEntity cannot be cast to org.springframework.web.servlet.ModelAndView
網上去stackoverflow搜,也是搜到這個問題:https://stackoverflow.com/search?q=java.lang.ClassCastException%3A+org.springframework.http.ResponseEntity+cannot+be+cast+to+org.springframework.web.servlet.ModelAndView, 不過和自己遇到的不一樣,很奇怪的型別轉換,導致ModelAndView頁面跳轉都出異常,我懷疑是jar衝突,不過有不像,這裡只是個頁面跳轉而已,型別轉換異常很奇怪?
經過比較長時間的排查,除錯,找到了原因:原來是被一個打日誌切面影響了,所謂AOP,就是在執行時,動態地將程式碼切入到類的指定方法、指定位置上的程式設計思想就是面向切面的程式設計。雖然說切面很好用,不過用的不當也是一堆坑
這是切面在環繞裡的程式碼,加了try...catch...,不知道為什麼環繞裡的程式碼異常,然後事務回滾,在catch裡又加了ResponseEntity物件,所以就這樣出現異常的,TODO 做個筆記記錄一下,不過切面為什麼異常了,沒找到原因,所以切面裡的異常要慎