該筆記是看視頻的記錄,視頻地址:http://www.imooc.com/learn/810
一、使用@Valid做表單驗證

domain中定義valid規(guī)則

Controller增加Valid注解,并且對BindingResult做處理
二、使用AOP處理請求

請求方法前打印日志

請求方法后打印日志

獲取返回值

定義一個@Pointcut然后引用
三、統(tǒng)一異常處理
1、異常情況處理

成功則返回新增的girl,失敗返回錯誤信息

成功時:返回了成功的對象

失敗時:返回錯誤信息
2、更好的處理方式
上面的返回結(jié)果并不友好,不方便前端處理,我們期望的是下圖這樣的:包括一個code表示成功失敗,msg表示處理結(jié)果信息,data表示對象信息

友好的返回結(jié)果
下面來看實現(xiàn):

定義一個Result類作為返回對象

定義一個Util方便操作

引用代碼
3、Exception的處理
當系統(tǒng)發(fā)生異常時

當系統(tǒng)發(fā)生異常時
前臺就會收到這樣的消息

前臺就會收到這樣的消息
這不是我們想要的,我們希望發(fā)生異常的時候依然可以正常返回,可以通過一個ExceptionHandle來實現(xiàn)

ExceptionHandle中指定handle的異常類型和返回值
就得到了我們想要的返回格式

就得到了我們想要的返回格式
4、異常精細化處理:為異常編號

實現(xiàn)一個Exception的子類,增加code屬性

不同業(yè)務(wù)拋出不同的code

捕獲異常,如果是GirlException,則拋出返回的code,否則使用統(tǒng)一的code
5、異常編號用枚舉類型代替
100、101這種編號寫在具體業(yè)務(wù)邏輯里面顯然不妥,時間長了,前臺拋出一個100的異常,我們很難再想起這個100到底代表什么,也不好找到這些代碼,通常的做法是把所有異常編號都放在一個枚舉類型中,這樣就好查啦
如下圖,我們新建了一個枚舉類,有了這個枚舉類,我們再增加異常類型、修改異常提示,就再也不用去茫茫code海里面去搜索了。

1、新建一個枚舉類,定義異常編號和中文提示

2、throw異常里面,就不寫code和msg了,用枚舉值代替

3、修改GrilException的參數(shù)

4、調(diào)用結(jié)果也是一樣的
四、單元測試
1、測試Service

測試Service

測試Controller
2、測試API

測試API:Status

測試API:返回值

上面的例子是匹配返回值和abc,顯然不相等,所以報錯
maven打包的時候也會自動運行這些單元測試,執(zhí)行mvn clean package

自動運行單元測試,并報出一個異常