我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Spring MVC Interceptor 实现性能监控的功能代码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Spring MVC Interceptor 实现性能监控的功能代码

利用Spring MVC 的 Interceptor 实现个简易的性能监控,计算一下每个url的执行时间。

在 preHandle 方法中记录当前的时间戳到线程局部变量里,然后在afterCompletion方法中,用当前的时间戳剪掉线程局部变量里的时间戳得出个运行时间,并记录到log里。

这只是个简易的性能监控,如果想长期正式的监控性能,请选择其它成熟的产品。

Interceptor

import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.core.NamedThreadLocal;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;  public class PerformanceInterceptor implements HandlerInterceptor {   private final static Logger LOGGER = LoggerFactory.getLogger(PerformanceInterceptor.class);   private NamedThreadLocal<Long> startTimeThreadLocal = new NamedThreadLocal<Long>("performance");   @Override  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)      throws Exception {    startTimeThreadLocal.set(System.currentTimeMillis());    return true;  }   @Override  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,      ModelAndView modelAndView) throws Exception {    return;  }   @Override  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)      throws Exception {    long currentTime = System.currentTimeMillis();    long executeTime = currentTime - startTimeThreadLocal.get();    LOGGER.info("uri:{} 执行了 {} 毫秒", request.getRequestURI(), executeTime);  } }

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Spring MVC Interceptor 实现性能监控的功能代码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Spring MVC Interceptor 实现性能监控的功能代码

利用Spring MVC 的 Interceptor 实现个简易的性能监控,计算一下每个url的执行时间。在 preHandle 方法中记录当前的时间戳到线程局部变量里,然后在afterCompletion方法中,用当前的时间戳剪掉线程局部
2023-05-31

SpringBoot集成Druid实现监控功能的示例代码

本文详细介绍了如何在SpringBoot应用程序中集成Druid以实现监控功能。Druid提供了一个控制台,用于监控数据库性能、SQL查询和系统资源。通过添加Druid依赖项、配置数据源、创建配置文件、启用控制台和运行应用程序,开发人员可以轻松启用Druid监控。Druid提供实时监控、SQL查询监控和系统资源监控等优点,帮助识别和优化数据库性能。
SpringBoot集成Druid实现监控功能的示例代码
2024-04-02

Spring AOP实现功能权限校验功能的示例代码

实现功能权限校验的功能有多种方法,其一使用拦截器拦截请求,其二是使用AOP抛异常。 首先用拦截器实现未登录时跳转到登录界面的功能。注意这里没有使用AOP切入,而是用拦截器拦截,因为AOP一般切入的是service层方法,而拦截器是拦截控制器
2023-05-30

如何进行C++代码的性能监控?

如何进行C++代码的性能监控?简介:在软件开发中,性能是一个非常重要的指标。对于C++开发者来说,监控代码的性能可以帮助他们发现潜在的性能问题,并进行优化以提高程序的效率。本文将介绍一些常用的C++性能监控工具和技术,帮助开发者更好地监控和
如何进行C++代码的性能监控?
2023-11-04

Spring MVC图片的上传和下载功能怎么实现

这篇文章主要介绍了Spring MVC图片的上传和下载功能怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring MVC图片的上传和下载功能怎么实现文章都会有所收获,下面我们一起来看看吧。序言SSM
2023-07-05

Android 分享功能的实现代码

Android 分享功能的实现代码 一个Activity中,取出设备上安装的所有支持分享动作的Activity,在grid中显示。 实例代码: public class NShareActivity ext
2022-06-06

Android计步功能的实现代码

本文对原文计步项目进行了精简,移除了进程服务和计时、守护进程、数据库保存等等,方便扩展功能。 Android4.4以上版本,有些手机有计步传感器可以直接使用, 而有些手机没有,但有加速度传感器,也可以实现计步功能(需要计算加速度波峰波谷来判
2022-06-06

如何在Spring Boot中使用 Actuator实现一个监控端点功能

这篇文章将为大家详细讲解有关如何在Spring Boot中使用 Actuator实现一个监控端点功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在Spring Boot的众多Starter
2023-05-31

Android倒计时功能的实现代码

好久没有写博客了,趁着年末,总结了下最近一年所遇到的一些技术问题,还有一些自定义控件,比如倒计时功能 首先倒计时的实现方式 1.Handler 2.Timer 3.RxJava 4.ValueAnimator 5.其他 这些方式中,我选择了
2022-06-06

ASP MVC实现缓存功能的详细教程,提升你的网站性能

本文将详细介绍ASP MVC实现缓存功能的步骤,结合代码示例,讲解如何使用缓存来提升网站性能,提高用户体验。
ASP MVC实现缓存功能的详细教程,提升你的网站性能
2024-02-24

Spring MVC环境中文件上传功能的实现方法详解

前言 我们在实际开发过程中,尤其是web项目开发,文件上传和下载的需求的功能非常场景,比如说用户头像、商品图片、邮件附件等等。其实文件上传下载的本质都是通过流的形式进行读写操作,而在开发中不同的框架都会对文件上传和下载有或多或少的封
2023-05-30

python django 实现验证码的功能实例代码

我也是刚学Python Django不久很多都不懂,所以我现在想一边学习一边记录下来然后大家一起讨论! 验证码功能一开始我在网上找了很多的demo但是我在模仿他们写的时候,发现在我的版本上根本就不能运行起来在前端页面显示的时候是图裂,有可
2022-06-04

Android-实现切换Fragment页功能的实现代码

场景:使用Fragment实现切页。类结构:一:ActivityActivity中使用getSupportFragmentManager().beginTransaction()来填充一个Fragment(管理用的FragmentA)Act
2022-06-06

Android实现短信验证功能的代码

在我们现在开发APP过程中,当用户注册时,短信验证是必不可少的操作,这里我们就是用一个免费的第三方短信验证SDK-MOP 首先看下效果图 获取AppKey和AppSecret 首先进入官网,登录(没有帐号的自己去注册一个)。鼠标移动到右侧头
2022-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录