1

时间:2017年3月19日星期日
说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com
教学示例源码:https://github.com/zccodere/s...
个人学习源码:https://github.com/zccodere/s...

第一章:课程介绍

1-1 课程介绍

本课程紧接着《2小时学会SpringBoot》课程,请先看入门课。
传送门:https://segmentfault.com/a/11...

web进阶

1.使用@Valid表单验证
2.使用AOP处理请求
3.统一异常处理
4.单元测试

第二章:Web进阶

2-0 表单验证

1.在实体Bean里需要校验的字段上面添加注解

clipboard.png

2.在接收参数时,使用@Valid注解进行校验

clipboard.png

2-1 使用AOP处理请求(上)

AOP统一处理请求日志

也谈AOP

1.AOP是一种编程方式
    --与语言无关,是一种程序设计思想
    --面向切面(AOP)Aspect Oriented Programming
    --面向对象(OOP)Object Oriented Programming
    --面向过程(POP)Procedure Oriented Programming
2.面向过程到面向对象
    --面向过程:假如下雨了,我打开了雨伞
    --面向对象:天气->下雨,我->打伞
3.换个角度看世界,换个姿势处理问题
4.将通用逻辑从业务逻辑中分离出来

AOP示例

clipboard.png

clipboard.png

提取执行相同的代码为一个切面

clipboard.png

2-2 使用AOP处理请求(中)

编写切面通知执行方法

clipboard.png

@Aspect:声明当前类是一个切面处理类
@Component:声明当前类是一个Bean,由Spring的IOC容器进行管理
@Pointcut:声明需要处理的切点

spring aop通知(advice)分成五类:

@Before:前置通知[Before advice]:在连接点前面执行,前置通知不会影响连接点的执行,除非此处抛出异常。
@AfterReturning:正常返回通知[After returning advice]:在连接点正常执行完成后执行,如果连接点抛出异常,则不会执行。
@AfterThrowing:异常返回通知[After throwing advice]:在连接点抛出异常后执行。
@After:返回通知[After (finally) advice]:在连接点执行完成后执行,不管是正常执行完成,还是抛出异常,都会执行返回通知中的内容。
@Around:环绕通知[Around advice]:环绕通知围绕在连接点前后,比如一个方法调用的前后。这是最强大的通知类型,能在方法调用前后自定义一些操作。环绕通知还需要负责决定是继续处理join point(调用ProceedingJoinPoint的proceed方法)还是中断执行。

2-3 使用AOP处理请求(下)

clipboard.png

2-4 统一异常处理(上)

什么是异常处理?

如果不加异常处理的话,程序出错了,用户可能不知道是啥原因。加上处理后,比如加上友好信息等用户能知道错在哪。

为什么要统一异常处理?

1、在框架层面封装checked exception,将其转化为unchecked exception,避免开发过程中编写繁冗的try...catch代码。 
2、业务层面的开发,根据程序代码职责定义不同的RuntimeException(它就是unchecked exception,一般定义为RuntimeException的子类) 
3、通过前两个观点,系统中自定义的异常将只存在unchecked exception,系统只在于客户端交换数据的上层,设置统一异常处理机制,并将一些异常转化为用户所能理解的信息传达给用户。 
4、其他如业务层,数据持久层,等底层只负责将异常抛出即可,但要注意不要丢失掉异常堆栈(这一点是初学者容易犯的一个错误)。 

以上答案内容节选自:http://redhacker.iteye.com/bl...

例子:获取某女生的年龄并判断,小于10,返回“应该在上小学”,大于10且小于16,返回“可能在上初中”。

可能比较容易想到的解决方案是:通过标识来传递信息,比如

clipboard.png

2-5 统一异常处理(中)

使用统一异常处理后,则为另一种解决方式

步骤一:自定义异常

clipboard.png

步骤二:全局异常统一处理类

clipboard.png

步骤三:使用自定义异常

clipboard.png

2-6 统一异常处理(下)

使用枚举进行优化响应编码及响应消息,便于统一维护

步骤一:定义枚举类

clipboard.png

步骤二:优化自定义异常

clipboard.png

步骤三:使用自定义异常

clipboard.png

2-7 单元测试

目录

测试Service
测试API

测试Service

clipboard.png

测试Controller

clipboard.png

第三章:课程总结

3-1 课程总结

web进阶

1.使用@Valid表单验证
2.使用AOP处理请求
3.统一异常处理
4.单元测试

妙手空空
1.3k 声望370 粉丝

博观而约取,厚积而薄发