nested exception is java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)] with root cause private void addOperationLog(JoinPoint joinPoint, Object res, int time) { MethodSignature signature = (MethodSignature)joinPoint.getSignature(); MpOpLog operationLog = new MpOpLog(); operationLog.setRunTime(time); operationLog.setReturnVal(JSON.toJSONString(res)); System.out.println("================:"+joinPoint.toString()); Object[] args = joinPoint.getArgs(); Object[] arguments = new Object[args.length]; System.out.println("================:"+args); for (int i = 0; i < args.length; i++) { if (args[i] instanceof ServletRequest || args[i] instanceof ServletResponse || args[i] instanceof MultipartFile) { //ServletRequest不能序列化,從入參里排除,否則報異常:java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false) //ServletResponse不能序列化 從入參里排除,否則報異常:java.lang.IllegalStateException: getOutputStream() has already been called for this response continue; } arguments[i] = args[i]; } String paramter = ""; if (arguments != null) { try { paramter = JSONObject.toJSONString(arguments); } catch (Exception e) { paramter = arguments.toString(); } } System.out.println("================:"+paramter.toString()); operationLog.setArgs(paramter.toString()); operationLog.setOpTime(new Date()); operationLog.setMethod(signature.getDeclaringTypeName() + "." + signature.getName()); String uerid = AppUtil.getJwtParam("userId"); String userName = AppUtil.getJwtParam("userName"); operationLog.setUserId(StringUtils.defaultIfBlank(uerid, "anonymous")); operationLog.setUserName(StringUtils.defaultIfBlank(userName, "anonymous")); OpLog annotation = signature.getMethod().getAnnotation(OpLog.class); if (annotation != null) { operationLog.setId(UUID.randomUUID().toString().replace("-", "")); operationLog.setLevel(annotation.level()); operationLog.setContent(getDetail(((MethodSignature)joinPoint.getSignature()).getParameterNames(), arguments, annotation)); operationLog.setOpType(annotation.operationType().getValue()); operationLog.setOpUnit(annotation.operationUnit()); } tmpOpLogService.insert(operationLog); }