@Aspect @Component @Slf4j public class AESTimeAspect { @Around("execution(* com.trt.sea.xxserx.controller*..*Controller.*(..))") public Object handleAroundControllerMethod(ProceedingJoinPoint pjp) throws Throwable { long start = System.currentTimeMillis(); ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = sra.getRequest(); String method = request.getMethod(); String className = pjp.getTarget().getClass().getSimpleName(); String methodName = pjp.getSignature().getName(); Object[] args = pjp.getArgs(); // 解决部分参数不能序列化问题 It is illegal to call this method if the current request is not in asynchronous mode List<Object> logArgs = (ArrayUtils.isEmpty(args) ? Stream.empty() : Arrays.stream(args)).filter(arg -> (!(arg instanceof HttpServletRequest) && !(arg instanceof HttpServletResponse))) .collect(Collectors.toList()); String contentType = request.getHeader("Content-Type")+""; if("GET".equalsIgnoreCase(method)){ log.info("^^ enter {}.{} receive data with : {} ^", className,methodName,logArgs); }else { if(contentType.contains("x-www-form-urlencoded")){ log.info("^^ enter {}.{} ^^", className,methodName); }else { //multipart/form-data text/xml (xml) log.info("^^ enter {}.{} receive data with : {} ^^", className,methodName, JSON.toJSONString(logArgs)); } } Object object = pjp.proceed(); String costTime = (System.currentTimeMillis() - start) + ""; log.info("*** end run the method --> {} total cost time is {} ms ***", methodName, costTime); HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse(); // 我的所有响应数据都属JSONObject 统一加密 if (response != null && (object instanceof JSONObject)) { String resTs = System.currentTimeMillis() + ""; JSONObject resJson = (JSONObject) object; // 加密 todo 然后返回数据 response.addHeader("res-ts",resTs); response.setHeader("Access-Control-Expose-Headers","res-ts"); } return object; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
2019-06-06 自定义注解