當切面有參數為HttpServletRequest之類的參數時,使用
Object[] args = joinPoint.getArgs();
會占用HttpServletRequest中的上下文,當再次調用
JSON.toJSONString(args);
為再次嘗試獲取request中的上下文,如果未開啟Servlet異步處理,則會拋出此異常,建議切面獲取參數時過濾掉
List<Object> logArgs = stream.filter(arg -> (!(arg instanceof HttpServletRequest) && !(arg instanceof HttpServletResponse))).collect(Collectors.toList());
關於切面代理,多線程,序列化,流處理問題需要更多的深入學習,一起進步。