您好,登录后才能下订单哦!
这篇文章主要介绍“Spring AOP怎么实现打印HTTP接口出入参日志”,在日常操作中,相信很多人在Spring AOP怎么实现打印HTTP接口出入参日志问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring AOP怎么实现打印HTTP接口出入参日志”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
定义个一个SpringAOP的配置类,里边获取请求的URL、请求的入参、相应的出参,通过日志打印出来。
SpringBoot的aop依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
示例
定义了一个Controller,里边就一个方法,方法请求类型是get,出入参都是简单的一个字符串字段。
package com.example.springbootaoplog.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author hongcunlin */ @RestController @RequestMapping("/index") public class IndexController { @GetMapping("/indexContent") public String indexContent(String param) { return "test"; } }
这算是本文的重点了,定义一个AOP的内容,首先是切点,再者是请求前日志打印,最后请求后日志打印
package com.example.springbootaoplog.config; import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; /** * aop日志打印配置 * * @author hongcunlin */ @Slf4j @Aspect @Component public class AopLogConfig { /** * 切点路径:Controller层的所有方法 */ @Pointcut("execution(public * com.example.springbootaoplog.controller.*.*(..))") public void methodPath() { } /** * 入参 * * @param joinPoint 切点 */ @Before(value = "methodPath()") public void before(JoinPoint joinPoint) { ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); String url = requestAttributes.getRequest().getRequestURL().toString(); log.info("请求 = {}, 入参 = {}", url, JSON.toJSONString(joinPoint.getArgs())); } /** * 出参 * * @param res 返回 */ @AfterReturning(returning = "res", pointcut = "methodPath()") public void after(Object res) { ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); String url = requestAttributes.getRequest().getRequestURL().toString(); log.info("请求 = {}, 入参 = {}", url, JSON.toJSONString(res)); } }
我们通过浏览器的URL,针对我们编写的http接口,发起一次get请求:
可以看到,日志里边打印了我们预期的请求的URL和出入参了:
说明我们的程序是正确的了。
到此,关于“Spring AOP怎么实现打印HTTP接口出入参日志”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。