08 AOP切面编程与异常处理_第1页
08 AOP切面编程与异常处理_第2页
08 AOP切面编程与异常处理_第3页
08 AOP切面编程与异常处理_第4页
08 AOP切面编程与异常处理_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

罗荣良AOP切面编程与异常处理本节学习目标1.理解AOP(面向切面编程)的核心思想2.掌握AOP五大术语与切入点表达式3.实战:使用AOP实现Web请求日志记录4.掌握SpringBoot全局异常处理机制5.设计标准化的API统一响应格式痛点引入:代码里的“牛皮癣”如果要实现日志和异常处理功能:有三个Controller方法,每个开头都写System.out.println("日志...")

结尾都有try-catch。问题:如何消除重复的非业务代码?什么是AOP(面向切面编程)定义:将通用逻辑(日志、权限、事务)从业务逻辑中分离出来。比喻:汉堡包模型。面包片=切面逻辑(AOP)肉饼=业务逻辑(Controller/Service)切面(Aspect):关注点的模块化(类)连接点(JoinPoint):程序执行的点(方法)切入点(Pointcut):匹配连接点的规则通知(Advice):在切入点执行的动作AOP核心术语图解通知(Advice)的类型@Before:方法执行前@After:方法执行后(无论成功失败)@AfterReturning:方法成功返回后@AfterThrowing:抛出异常后@Around:环绕(最强大,可控制执行)实战一:Web请求日志切面目标:记录每个接口的URL、IP、方法名、耗时。依赖:spring-boot-starter-aop步骤:定义Aspect类->编写Pointcut->编写Advice切入点表达式详解代码:execution(public*com.example.controller.*.*(..))解析:*(返回值)com.example...(包路径)*(类名)*(方法名)(..)(任意参数)代码演示:定义切面类代码演示:获取请求信息

在@AfterReturning中记录result。技巧:利用ThreadLocal或@Around计算System.currentTimeMillis()差值。代码演示:记录返回值与耗时痛点二:丑陋的异常处理Controller中充斥着大量的try-catch块。弊端:代码臃肿,且返回给前端的错误格式不统一(有时是404页,有时是报错堆栈)。希望发生错误,后端都返回一个统一的JSON格式,比如:{"code":500,"msg":"系统繁忙"}全局异常处理原因@ControllerAdvice:控制器的增强器。@ExceptionHandler:捕获特定异常。流程:Controller抛出异常->被Advice捕获->返回友好的JSON。前后端分离标准JSON格式:code:状态码(200,500)msg:提示信息data:数据载体创建Result封装类。实战二:定义统一响应结构代码演示:全局异常处理器编写核心类GlobalExceptionHandler进阶:处理特定异常捕获ArithmeticException(除零错误)或自定义BusinessException。展示优先级:精确匹配优先。最终效果对比

Before:控制台报错,前端收到500堆栈页面。After:控制台打印优雅日志,前端收到{code:500,msg:"系统繁忙"}。本节小

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论