【视频笔记】Spring boot进阶之Web进阶

该笔记是看视频的记录,视频地址:http://www.imooc.com/learn/810

一、使用@Valid做表单验证

domain中定义valid规则
【视频笔记】Spring boot进阶之Web进阶_第1张图片
Controller增加Valid注解,并且对BindingResult做处理

二、使用AOP处理请求

【视频笔记】Spring boot进阶之Web进阶_第2张图片
请求方法前打印日志
请求方法后打印日志
获取返回值
【视频笔记】Spring boot进阶之Web进阶_第3张图片
定义一个@Pointcut然后引用

三、统一异常处理

1、异常情况处理

【视频笔记】Spring boot进阶之Web进阶_第4张图片
成功则返回新增的girl,失败返回错误信息
【视频笔记】Spring boot进阶之Web进阶_第5张图片
成功时:返回了成功的对象
【视频笔记】Spring boot进阶之Web进阶_第6张图片
失败时:返回错误信息

2、更好的处理方式

上面的返回结果并不友好,不方便前端处理,我们期望的是下图这样的:包括一个code表示成功失败,msg表示处理结果信息,data表示对象信息

【视频笔记】Spring boot进阶之Web进阶_第7张图片
友好的返回结果

下面来看实现:


【视频笔记】Spring boot进阶之Web进阶_第8张图片
定义一个Result类作为返回对象
【视频笔记】Spring boot进阶之Web进阶_第9张图片
定义一个Util方便操作
【视频笔记】Spring boot进阶之Web进阶_第10张图片
引用代码

3、Exception的处理

当系统发生异常时


【视频笔记】Spring boot进阶之Web进阶_第11张图片
当系统发生异常时

前台就会收到这样的消息


【视频笔记】Spring boot进阶之Web进阶_第12张图片
前台就会收到这样的消息

这不是我们想要的,我们希望发生异常的时候依然可以正常返回,可以通过一个ExceptionHandle来实现

【视频笔记】Spring boot进阶之Web进阶_第13张图片
ExceptionHandle中指定handle的异常类型和返回值

就得到了我们想要的返回格式

就得到了我们想要的返回格式

4、异常精细化处理:为异常编号

【视频笔记】Spring boot进阶之Web进阶_第14张图片
实现一个Exception的子类,增加code属性
【视频笔记】Spring boot进阶之Web进阶_第15张图片
不同业务抛出不同的code
【视频笔记】Spring boot进阶之Web进阶_第16张图片
捕获异常,如果是GirlException,则抛出返回的code,否则使用统一的code

5、异常编号用枚举类型代替

100、101这种编号写在具体业务逻辑里面显然不妥,时间长了,前台抛出一个100的异常,我们很难再想起这个100到底代表什么,也不好找到这些代码,通常的做法是把所有异常编号都放在一个枚举类型中,这样就好查啦

如下图,我们新建了一个枚举类,有了这个枚举类,我们再增加异常类型、修改异常提示,就再也不用去茫茫code海里面去搜索了。

【视频笔记】Spring boot进阶之Web进阶_第17张图片
1、新建一个枚举类,定义异常编号和中文提示
【视频笔记】Spring boot进阶之Web进阶_第18张图片
2、throw异常里面,就不写code和msg了,用枚举值代替
【视频笔记】Spring boot进阶之Web进阶_第19张图片
3、修改GrilException的参数
4、调用结果也是一样的

四、单元测试

1、测试Service

【视频笔记】Spring boot进阶之Web进阶_第20张图片
测试Service
【视频笔记】Spring boot进阶之Web进阶_第21张图片
测试Controller

2、测试API

【视频笔记】Spring boot进阶之Web进阶_第22张图片
测试API:Status
【视频笔记】Spring boot进阶之Web进阶_第23张图片
测试API:返回值
【视频笔记】Spring boot进阶之Web进阶_第24张图片
上面的例子是匹配返回值和abc,显然不相等,所以报错

maven打包的时候也会自动运行这些单元测试,执行mvn clean package

【视频笔记】Spring boot进阶之Web进阶_第25张图片
自动运行单元测试,并报出一个异常

你可能感兴趣的:(【视频笔记】Spring boot进阶之Web进阶)