天天看點

SpringBoot全局異常與資料校驗要思考的問題項目建立定義成功失敗 傳回碼定義接口傳回響應實體 全局異常攔截和驗證定義自定義業務異常 編寫全局異常控制器并對自定義異常做處理 編寫controller模拟抛出業務異常 postMan模拟請求接口,進行驗證編寫實體`User`,并對屬性進行注解控制 全局異常控制類加入攔截 編寫控制器 postMan模拟請求代碼位址結尾

異常處理是每個項目中都繞不開的話題,那麼如何優雅的處理異常,是本文的話題。本文将結合SpringBoot架構一起和大家探讨下。

要思考的問題

在現在的前後端互動中,通常都規範了接口傳回方式,如傳回的接口狀态(成功|失敗)以及要傳回的資料在那個字段取,或者說失敗了以後提示資訊從接口哪裡傳回,是以,如果想做全局異常,并且異常發生後能準确的傳回給前端解析,那麼需要異常發生時傳回給前端的格式與正常失敗場景的格式一緻。

項目建立

利用idea 工具,很容易的搭建一個SpringBoot項目,要引入的maven依賴如下:

SpringBoot全局異常與資料校驗要思考的問題項目建立定義成功失敗 傳回碼定義接口傳回響應實體 全局異常攔截和驗證定義自定義業務異常 編寫全局異常控制器并對自定義異常做處理 編寫controller模拟抛出業務異常 postMan模拟請求接口,進行驗證編寫實體`User`,并對屬性進行注解控制 全局異常控制類加入攔截 編寫控制器 postMan模拟請求代碼位址結尾

很簡單,除了加入web功能還加入了我們需要用到的JSR-303校驗架構。

定義成功失敗 傳回碼

SpringBoot全局異常與資料校驗要思考的問題項目建立定義成功失敗 傳回碼定義接口傳回響應實體 全局異常攔截和驗證定義自定義業務異常 編寫全局異常控制器并對自定義異常做處理 編寫controller模拟抛出業務異常 postMan模拟請求接口,進行驗證編寫實體`User`,并對屬性進行注解控制 全局異常控制類加入攔截 編寫控制器 postMan模拟請求代碼位址結尾

定義接口傳回響應實體

SpringBoot全局異常與資料校驗要思考的問題項目建立定義成功失敗 傳回碼定義接口傳回響應實體 全局異常攔截和驗證定義自定義業務異常 編寫全局異常控制器并對自定義異常做處理 編寫controller模拟抛出業務異常 postMan模拟請求接口,進行驗證編寫實體`User`,并對屬性進行注解控制 全局異常控制類加入攔截 編寫控制器 postMan模拟請求代碼位址結尾

全局異常攔截和驗證

定義自定義業務異常

SpringBoot全局異常與資料校驗要思考的問題項目建立定義成功失敗 傳回碼定義接口傳回響應實體 全局異常攔截和驗證定義自定義業務異常 編寫全局異常控制器并對自定義異常做處理 編寫controller模拟抛出業務異常 postMan模拟請求接口,進行驗證編寫實體`User`,并對屬性進行注解控制 全局異常控制類加入攔截 編寫控制器 postMan模拟請求代碼位址結尾

編寫全局異常控制器并對自定義異常做處理

SpringBoot全局異常與資料校驗要思考的問題項目建立定義成功失敗 傳回碼定義接口傳回響應實體 全局異常攔截和驗證定義自定義業務異常 編寫全局異常控制器并對自定義異常做處理 編寫controller模拟抛出業務異常 postMan模拟請求接口,進行驗證編寫實體`User`,并對屬性進行注解控制 全局異常控制類加入攔截 編寫控制器 postMan模拟請求代碼位址結尾

編寫controller模拟抛出業務異常

SpringBoot全局異常與資料校驗要思考的問題項目建立定義成功失敗 傳回碼定義接口傳回響應實體 全局異常攔截和驗證定義自定義業務異常 編寫全局異常控制器并對自定義異常做處理 編寫controller模拟抛出業務異常 postMan模拟請求接口,進行驗證編寫實體`User`,并對屬性進行注解控制 全局異常控制類加入攔截 編寫控制器 postMan模拟請求代碼位址結尾

postMan模拟請求接口,進行驗證

SpringBoot全局異常與資料校驗要思考的問題項目建立定義成功失敗 傳回碼定義接口傳回響應實體 全局異常攔截和驗證定義自定義業務異常 編寫全局異常控制器并對自定義異常做處理 編寫controller模拟抛出業務異常 postMan模拟請求接口,進行驗證編寫實體`User`,并對屬性進行注解控制 全局異常控制類加入攔截 編寫控制器 postMan模拟請求代碼位址結尾

資料綁定異常處理

通常我們操作資料的時候,不僅前端需要進行資料校驗,後端也應當進行攔截和進行相應的錯誤提示,

JSR-303校驗架構也是我們的一種選擇。

編寫實體`User`,并對屬性進行注解控制

SpringBoot全局異常與資料校驗要思考的問題項目建立定義成功失敗 傳回碼定義接口傳回響應實體 全局異常攔截和驗證定義自定義業務異常 編寫全局異常控制器并對自定義異常做處理 編寫controller模拟抛出業務異常 postMan模拟請求接口,進行驗證編寫實體`User`,并對屬性進行注解控制 全局異常控制類加入攔截 編寫控制器 postMan模拟請求代碼位址結尾

全局異常控制類加入攔截

SpringBoot全局異常與資料校驗要思考的問題項目建立定義成功失敗 傳回碼定義接口傳回響應實體 全局異常攔截和驗證定義自定義業務異常 編寫全局異常控制器并對自定義異常做處理 編寫controller模拟抛出業務異常 postMan模拟請求接口,進行驗證編寫實體`User`,并對屬性進行注解控制 全局異常控制類加入攔截 編寫控制器 postMan模拟請求代碼位址結尾

編寫控制器

SpringBoot全局異常與資料校驗要思考的問題項目建立定義成功失敗 傳回碼定義接口傳回響應實體 全局異常攔截和驗證定義自定義業務異常 編寫全局異常控制器并對自定義異常做處理 編寫controller模拟抛出業務異常 postMan模拟請求接口,進行驗證編寫實體`User`,并對屬性進行注解控制 全局異常控制類加入攔截 編寫控制器 postMan模拟請求代碼位址結尾

postMan模拟請求

不填寫任何屬性,模拟添加操作,準确進行攔截和報錯

SpringBoot全局異常與資料校驗要思考的問題項目建立定義成功失敗 傳回碼定義接口傳回響應實體 全局異常攔截和驗證定義自定義業務異常 編寫全局異常控制器并對自定義異常做處理 編寫controller模拟抛出業務異常 postMan模拟請求接口,進行驗證編寫實體`User`,并對屬性進行注解控制 全局異常控制類加入攔截 編寫控制器 postMan模拟請求代碼位址結尾

代碼位址

代碼位址:https://github.com/pengziliu/spring-boot-2.0-leaning

項目結構預覽:

SpringBoot全局異常與資料校驗要思考的問題項目建立定義成功失敗 傳回碼定義接口傳回響應實體 全局異常攔截和驗證定義自定義業務異常 編寫全局異常控制器并對自定義異常做處理 編寫controller模拟抛出業務異常 postMan模拟請求接口,進行驗證編寫實體`User`,并對屬性進行注解控制 全局異常控制類加入攔截 編寫控制器 postMan模拟請求代碼位址結尾

結尾

适合的才是最好的,每個團隊都應摸索出自己的一套異常解決方案,本文所提僅針對業務異常,希望大家也能有所收獲

歡迎工作一到五年的Java工程師朋友們加入Java填坑之路:860113481

群内提供免費的Java架構學習資料(裡面有高可用、高并發、高性能及分布式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!