+-
环绕通知必须有返回值,返回值即为目标方法的返回值,否则目标方法会无法结束,导致前端请求认为超时!return object;
必须有,别问,问就是被坑过
@Aspect
@Component
public class WebLogAspect {
private Logger logger = LoggerFactory.getLogger(getClass());
@Pointcut("execution(public * com.example.liaowh.controller..*.*(..))")
public void webLog() {
}
@Around("webLog()")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
// 接收到请求,记录请求内容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
// 记录下请求内容
logger.info("URL : " + request.getRequestURL().toString());
logger.info("HTTP_METHOD : " + request.getMethod());
logger.info("IP : " + request.getRemoteAddr());
logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
logger.info("ARGS : " + Arrays.toString(joinPoint.getArgs()));
Object object = joinPoint.proceed(joinPoint.getArgs());
logger.info("return" + object);
return object;
}
}