网站分站原理wordpress 手机端页面

张小明 2026/1/9 14:45:28
网站分站原理,wordpress 手机端页面,羽毛球赛事安排,注册域名之后如何做网站一步一步讲清楚#xff1a; #x1f449; 接口耗时为什么不能写在 Controller 里#xff1f; #x1f449; 在拦截器里应该怎么“正确、优雅地处理”#xff1f;一、为什么不在 Controller 里写耗时代码#xff1f;示例代码是这样的#xff1a;long start System.curre…一步一步讲清楚接口耗时为什么不能写在 Controller 里在拦截器里应该怎么“正确、优雅地处理”一、为什么不在 Controller 里写耗时代码示例代码是这样的long start System.currentTimeMillis(); // 业务逻辑 long cost System.currentTimeMillis() - start; log.info(接口耗时: {} ms, cost);❌ 问题有 4 个大量重复代码每个接口都要写一遍业务代码被日志污染容易漏写 / 写错无法统一统计所有接口这是典型的横切关注点Cross-Cutting Concern 非常适合用拦截器 / AOP二、正确方案在拦截器中统一记录接口耗时Spring MVC 中拦截器HandlerInterceptor是最合适的位置。三、拦截器记录耗时的核心思路preHandle → 记录开始时间 controller → 业务逻辑 afterCompletion → 计算耗时 打日志四、标准实现方式推荐写法1️⃣ 在 preHandle 中记录开始时间Component public class TimeCostInterceptor implements HandlerInterceptor { private static final Logger log LoggerFactory.getLogger(TimeCostInterceptor.class); private static final String START_TIME startTime; Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { request.setAttribute(START_TIME, System.currentTimeMillis()); return true; }2️⃣ 在 afterCompletion 中计算耗时Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { Long startTime (Long) request.getAttribute(START_TIME); if (startTime null) { return; } long cost System.currentTimeMillis() - startTime; log.info(接口耗时 | {} {} | {} ms, request.getMethod(), request.getRequestURI(), cost); } }3️⃣ 注册拦截器Configuration public class WebConfig implements WebMvcConfigurer { Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new TimeCostInterceptor()) .addPathPatterns(/**) .excludePathPatterns(/static/**); } }五、最终日志效果真实可用2025-01-01 10:00:01.456 INFO [traceId9f8a3b7c2d1a4e] 接口耗时 | GET /users/1 | 38 ms✔ 不侵入 Controller✔ 所有接口自动统计✔ 日志格式统一六、和 TraceId链路追踪如何配合如果你已经使用了MDC TraceId前一篇博客内容MDC.put(traceId, traceId);那么这里的耗时日志会自动带上 TraceId无需额外处理。 这就是为什么TraceFilterTimeCostInterceptor要一起使用七、进阶优化生产环境强烈推荐1️⃣ 慢接口告警非常实用if (cost 1000) { log.warn(慢接口 | {} {} | {} ms, request.getMethod(), request.getRequestURI(), cost); }2️⃣ 区分正常 / 异常请求if (ex ! null) { log.error(接口异常 | {} {} | {} ms, request.getMethod(), request.getRequestURI(), cost, ex); }3️⃣ 只统计 Controller 方法if (!(handler instanceof HandlerMethod)) { return; }避免静态资源、错误页面干扰统计。八、拦截器 vs AOP该选哪个场景推荐统计接口耗时✅ 拦截器记录方法级别日志AOP参数 / 返回值埋点AOP接口级统一日志✅ 拦截器HTTP 接口维度 拦截器最合适九、一句话总结面试 / 实战都能用接口耗时属于横切关注点应统一在 Spring MVC 拦截器中处理避免侵入 Controller 业务逻辑。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

西安建设局网站地址深圳市建设交易服务网

一、研究意义 多模态图通过融合文本、图像、音视频等多源信息与实体间的结构化关系,为社交网络、电商、生物医药与材料科学等领域提供了更具语义深度的数据表达方式。尽管该方向发展迅速,但现有多模态图学习方法多为特定数据与单一任务定制,在…

张小明 2025/12/29 15:09:53 网站建设

天津微外卖网站建设百度平台

case 条件语句的应用实践 文章目录case 条件语句的应用实践1 case 条件语句的语法2 case 条件语句实践3 实践:给输出的字符串加颜色4 case 语句企业级生产案例示例1:控制sshd服务示例2:管理用户5 case 条件语句的 Linux 系统脚本范例6 本章小…

张小明 2026/1/7 10:50:34 网站建设

C语言网站开发pdf平面设计作品图片大全

多模态AI新突破:Lumina-DiMOO开源模型重构跨模态交互范式 【免费下载链接】Lumina-DiMOO 项目地址: https://ai.gitcode.com/hf_mirrors/Alpha-VLLM/Lumina-DiMOO 在人工智能多模态交互领域,一场静默的技术革命正在悄然发生。近日,由…

张小明 2026/1/1 6:36:57 网站建设

金华专业网站制作公司厦门seo代运营

WKB近似方法及其应用详解 1. WKB近似基础 在量子力学中,WKB(Wentzel - Kramers - Brillouin)近似是一种重要的近似方法。从动量角度来看,有如下关系: [ \int_{a}^{b} p(x) dx = \left(n + \frac{1}{2}\right) \pi\hbar ] 在经典情况下,粒子会在转折点之间振荡。在相…

张小明 2025/12/31 20:40:17 网站建设

租房信息网站建设wordpress首页添加文章列表

Windows工作站网络连接全攻略 在网络环境搭建中,不同版本Windows工作站的连接配置是一项重要工作。下面将详细介绍Windows ME、Windows NT 4 Workstation和Windows 2000 Professional等系统的网络连接、共享设置及漫游配置等内容。 Windows ME系统网络连接与共享设置 网络连…

张小明 2026/1/1 3:02:52 网站建设

搜索引擎禁止的方式优化网站物流管理网站建设

之前编译得好好的,今天清理项目,改变路径,再编译,就报这个错。无论怎么重启、清理、删除,都存在。这个错误真的是莫名其妙啊!解决办法:经过一番搜索,找到了解决办法。在pro文件中加入…

张小明 2026/1/1 0:42:24 网站建设