| @@ -0,0 +1,68 @@ | |||||
| package com.iformall.interceptor; | |||||
| import com.alibaba.fastjson.JSON; | |||||
| 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.context.annotation.Configuration; | |||||
| import org.springframework.web.context.request.RequestAttributes; | |||||
| import org.springframework.web.context.request.RequestContextHolder; | |||||
| import org.springframework.web.context.request.ServletRequestAttributes; | |||||
| import javax.servlet.http.HttpServletRequest; | |||||
| import java.io.BufferedReader; | |||||
| import java.io.IOException; | |||||
| /** | |||||
| * 测试所有controler请求返回信息输出 | |||||
| * @author alascor | |||||
| * | |||||
| */ | |||||
| @Aspect | |||||
| @Configuration | |||||
| @Slf4j | |||||
| public class TestControllerReturnAspect { | |||||
| @Pointcut("execution(* com.iformall.controller.*Controller.*(..))") | |||||
| public void excudeService() { | |||||
| } | |||||
| @Around("excudeService()") | |||||
| public Object doAround(ProceedingJoinPoint pjp) throws Throwable { | |||||
| RequestAttributes ra = RequestContextHolder.getRequestAttributes(); | |||||
| ServletRequestAttributes sra = (ServletRequestAttributes) ra; | |||||
| HttpServletRequest request = sra.getRequest(); | |||||
| String method = request.getMethod(); | |||||
| String uri = request.getRequestURI(); | |||||
| String paraString = JSON.toJSONString(request.getParameterMap()); | |||||
| String requestBody = getBodyRequest(request); | |||||
| //log.info("***************************************************"); | |||||
| //log.info("请求开始, URI: {}, method: {}, params: {}", uri, method, paraString); | |||||
| // result的值就是被拦截方法的返回值 | |||||
| Object result = pjp.proceed(); | |||||
| log.info("开发调试请求结果日志,生产请关闭!!!!>>>>>>>>请求结束,URI: {}, method: {}, params: {},requestBody:{}. 返回值:{} " ,uri, method, paraString,requestBody, JSON.toJSONString(result)); | |||||
| return result; | |||||
| } | |||||
| private String getBodyRequest(HttpServletRequest request) throws IOException { | |||||
| // 直接从HttpServletRequest的Reader流中获取RequestBody | |||||
| BufferedReader reader = request.getReader(); | |||||
| StringBuilder builder = new StringBuilder(); | |||||
| String line = reader.readLine(); | |||||
| while(line != null){ | |||||
| builder.append(line); | |||||
| line = reader.readLine(); | |||||
| } | |||||
| reader.close(); | |||||
| String reqBody = builder.toString(); | |||||
| return reqBody; | |||||
| } | |||||
| } | |||||