最近,為了解耦,把一邏輯從interceptor抽出來,放在aop中處理,需要得到RequestBody。如下:
@Aspect @Configuration public class CheckAspect { private final Logger logger = LoggerFactory.getLogger(this.getClass()); // 定義切點Pointcut 自行寫入對應的controller包路徑 @Pointcut("execution(* com.hs.yido.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 url = request.getRequestURL().toString(); String method = request.getMethod(); String uri = request.getRequestURI(); String queryString = request.getQueryString(); //這里可以獲取到get請求的參數和其他信息 logger.info("請求開始, 各個參數, url: {}, method: {}, uri: {}, params: {}", url, method, uri, queryString); //重點 這里就是獲取@RequestBody參數的關鍵 調試的情況下 可以看到o變量已經獲取到了請求的參數 Object[] o = pjp.getArgs(); // result的值就是被攔截方法的返回值 Object result = pjp.proceed(); return result; } }