SPRINGBOOT整合AOP获取接口请求返回参数

GRADLE依赖

implementation 'com.alibaba:fastjson:1.2.75'
implementation 'eu.bitwalker:UserAgentUtils:1.21'

创建一个class

import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;
import java.util.Objects;

@Aspect
@Component
@Slf4j
public class AopLog
{
    /**
     * 设置切入点,按需要的项目结构设置
     */
    @Pointcut("execution(public * com.zeaho.test.controller.*Controller.*(..))")
    public void log()
    {
    }

    /**
     * 前置操作
     * @param point 切入点
     */
    @Before("log()")
    public void beforeLog(JoinPoint point)
    {
        ServletRequestAttributes attributes =
                (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = Objects.requireNonNull(attributes).getRequest();
        Map<String, String[]> parameterMap = request.getParameterMap();
        log.info("【请求类名】:{},【请求方法名】:{}",
                 point.getSignature().getDeclaringTypeName(),
                 point.getSignature().getName());
        log.info("【请求 URL】:{},【请求 IP】:{}, 【请求参数】:{}",
                 request.getRequestURL(),
                 request.getRemoteAddr(),
                 JSONObject.toJSONString(parameterMap));
    }

    /**
     * 环绕操作
     * @param point 切入点
     * @return 原方法返回值
     * @throws Throwable 异常信息
     */
    @Around("log()")
    public Object aroundLog(ProceedingJoinPoint point) throws Throwable
    {
        Object result = point.proceed();
        log.info("【接口返回值】:{}", JSONObject.toJSONString(result));
        return result;
    }

    /**
     * 后置操作,需要的话开启
     */
    //    @AfterReturning("log()")
    //    public void afterReturning()
    //    {
    //        ServletRequestAttributes attributes =
    //                (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    //        HttpServletRequest request = Objects.requireNonNull(attributes).getRequest();
    //
    //        String header = request.getHeader("User-Agent");
    //        UserAgent userAgent = UserAgent.parseUserAgentString(header);
    //        log.info("【浏览器类型】:{},【操作系统】:{},【原始User-Agent】:{}",
    //                 userAgent.getBrowser().toString(),
    //                 userAgent.getOperatingSystem().toString(),
    //                 header);
    //    }
}

效果如下:


AOP
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容