摘要:时间年月日星期日说明本文部分内容均来自慕课网。慕课网教学示例源码个人学习源码第一章课程介绍课程介绍本课程紧接着小时学会课程,请先看入门课。异常返回通知在连接点抛出异常后执行。
时间: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里需要校验的字段上面添加注解
2.在接收参数时,使用@Valid注解进行校验
2-1 使用AOP处理请求(上)AOP统一处理请求日志
也谈AOP
1.AOP是一种编程方式 --与语言无关,是一种程序设计思想 --面向切面(AOP)Aspect Oriented Programming --面向对象(OOP)Object Oriented Programming --面向过程(POP)Procedure Oriented Programming 2.面向过程到面向对象 --面向过程:假如下雨了,我打开了雨伞 --面向对象:天气->下雨,我->打伞 3.换个角度看世界,换个姿势处理问题 4.将通用逻辑从业务逻辑中分离出来
AOP示例
提取执行相同的代码为一个切面
2-2 使用AOP处理请求(中)编写切面通知执行方法
@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方法)还是中断执行。
什么是异常处理?
如果不加异常处理的话,程序出错了,用户可能不知道是啥原因。加上处理后,比如加上友好信息等用户能知道错在哪。
为什么要统一异常处理?
1、在框架层面封装checked exception,将其转化为unchecked exception,避免开发过程中编写繁冗的try...catch代码。 2、业务层面的开发,根据程序代码职责定义不同的RuntimeException(它就是unchecked exception,一般定义为RuntimeException的子类) 3、通过前两个观点,系统中自定义的异常将只存在unchecked exception,系统只在于客户端交换数据的上层,设置统一异常处理机制,并将一些异常转化为用户所能理解的信息传达给用户。 4、其他如业务层,数据持久层,等底层只负责将异常抛出即可,但要注意不要丢失掉异常堆栈(这一点是初学者容易犯的一个错误)。
以上答案内容节选自:http://redhacker.iteye.com/bl...
例子:获取某女生的年龄并判断,小于10,返回“应该在上小学”,大于10且小于16,返回“可能在上初中”。
可能比较容易想到的解决方案是:通过标识来传递信息,比如
2-5 统一异常处理(中)使用统一异常处理后,则为另一种解决方式
步骤一:自定义异常
步骤二:全局异常统一处理类
步骤三:使用自定义异常
2-6 统一异常处理(下)使用枚举进行优化响应编码及响应消息,便于统一维护
步骤一:定义枚举类
步骤二:优化自定义异常
步骤三:使用自定义异常
2-7 单元测试目录
测试Service 测试API
测试Service
测试Controller
第三章:课程总结 3-1 课程总结web进阶
1.使用@Valid表单验证 2.使用AOP处理请求 3.统一异常处理 4.单元测试
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/66835.html
摘要:时间年月日星期日说明本文部分内容均来自慕课网。整体目录结构如下项目文件用于数据持久化配置项目配置配置视图解析器配置静态资源映射配置配置配置自定义指令配置解析器配置,类似于项目启动类新建,注册配置类,并将其和当前关联。 时间:2017年3月19日星期日说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:无个人学习源码:https://githu...
摘要:小时学会学习总结时间年月日星期六说明本文部分内容均来自慕课网。慕课网教学示例源码暂无。数据库操作下第六章事务管理事务管理只有查询的时候不加事务,其它任何操作都要加事务。第七章课程回顾课程回顾总结介绍安装配置的使用数据库操作 《2小时学会SpringBoot》学习总结 时间:2017年2月18日星期六说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示...
摘要:因为某些原因,不方便在这里直接发送百度链接,关注我的微信公众号面试通关手册回复资源分享第一波即可领取。然后大家还有什么问题的话,可以在我的微信公众号后台面试通关手册给我说或者加我微信,我会根据自己的学习经验给了说一下自己的看法。 这是一篇针对Java初学者,或者说在Java学习路线上出了一些问题(不知道该学什么、不知道整体的学习路线是什么样的) 第一步:Java基础(一个月左右) 推荐...
时间:2017年07月09日星期日说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:无学习源码:https://github.com/zccodere/s... 第一章:概述 1-1 课程概述 主要内容 验证码历史 课程内容 不同方案对比 设计与实现 总结 1-2 验证码历史 验证码历史 无验证码:垃圾骚扰 Luis von Ahn:Captcha 不断...
阅读 3947·2021-10-19 13:23
阅读 2326·2021-09-09 11:37
阅读 2506·2019-08-29 15:20
阅读 3406·2019-08-29 11:08
阅读 1660·2019-08-26 18:27
阅读 1763·2019-08-23 12:20
阅读 3027·2019-08-23 11:54
阅读 2543·2019-08-22 15:19