欢迎光临散文网 会员登陆 & 注册

[Java干货系列]Springboot项目脚手架手把手教程(6)SpringBoot项目AOP统一打印

2023-08-28 15:35 作者:搬砖后端研发  | 我要投稿

背景

在实际Web项目中,我们通常都会在比如请求进来时或者返回后能够记录日志方便日后排查问题等。甚至有时候我们需要在内部的某些方法逻辑执行前、执行后做一些操作,比如:对参数进行解密,对所有的返回值进行加密等。这些与业务无关的操作,传统做法就是在每个期望的地方都去手动记录日志,但有了AOP的思想和实现,其实没有必要在每个方法中都写一遍,这里我们有两种方式实现,一是自定义个注解和切面方法来实现,可以适用任何你希望的方法上;二是针对controller的方法可以使用 springmvc 中的@ControllerAdvice 和 RequestBodyAdvice、ResponseBodyAdvice 来对请求前后进行处理,本质上也是 aop 的思想

自定义方式

自定义注解和切面方法,在方法执行开始之前和结束之后,打印出参、入参日志

RestControllerAdvice方式

RequestBodyAdvice:会对被@RquestBody和@PostMapping(@PutMapping等也生效)注解的请求进行增强处理,比如所有请求的数据都加密之后放在 body 中,在到达 controller 的方法之前,需要先进行解密,那么就可以通过 RequestBodyAdvice 来进行统一的解密处理,无需在 controller 方法中去做这些通用的操作。

ResponseBodyAdvice:类似RequestBodyAdvice,对 Controller 中@ResponseBody 类型返回值进行增强处理,也就是说可以拦截@ResponseBody 类型的返回值,进行再次处理,比如加密、日志等操作。


教程

自定义方式

1.引入依赖

2.定义切点

3.编写切面方法

4.编写controller

5.演示

RestControllerAdvice方式

1.日志依赖引入,这里我们日志框架就简单使用slf4j和logback

2.编写Request请求日志代码

3.编写response响应日志代码

4.编写controller

5.演示


[Java干货系列]Springboot项目脚手架手把手教程(6)SpringBoot项目AOP统一打印的评论 (共 条)

分享到微博请遵守国家法律