引入pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
aop配置
package com.my.test.aop;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
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;
import javax.servlet.http.HttpServletRequest;
import java.util.Objects;
@Aspect
@Component
@Slf4j
public class LogAspect {
@Pointcut("execution(public * com.my.test.controller.*.*(..))")
public void logPointcut() {
}
@Around("logPointcut()")
public Object handleAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
long start = System.currentTimeMillis();
Object[] args = proceedingJoinPoint.getArgs();
log.info("[{}] {} ,入参: {} " ,request.getMethod(),request.getRequestURL().toString(), JSONUtil.toJsonStr(args));
Object result = proceedingJoinPoint.proceed();
log.info("返回: {} , 总消耗时: {} ms",Objects.isNull(result) ? "无返回" : JSONUtil.toJsonStr(result),System.currentTimeMillis() - start);
return result;
}
}