环绕通知必须有返回值,返回值即为目标方法的返回值,不然目标方法会没法结束,致使前端请求认为超时!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; } }