精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

太全了!Spring Boot 3.4 七種方法耗時統計實現,一文搞定!

開發 前端
在性能優化的世界里,有一句老話:“你無法優化你不了解的東西(You can't improve what you don't measure)”。無論是對接口響應的監控、還是對業務邏輯執行效率的衡量,方法耗時統計都是系統調優的重要基石。

在日常開發過程中,我們經常會遇到系統響應變慢、頁面加載遲緩、接口卡頓等問題,而這些問題背后隱藏的往往是方法級性能瓶頸。隨著系統的不斷復雜化,代碼邏輯日益龐大,如何精準定位耗時點,及時發現并優化這些“隱形殺手”,已成為后端開發的基本功。

尤其是在 Spring Boot 3.4 日趨成熟、廣泛應用于微服務架構的背景下,開發者對方法執行時間的可觀測性性能數據的可量化性提出了更高要求。

本篇文章將以 com.icoderoad 作為標準業務包路徑,系統梳理 七種在Spring Boot 3.4項目中統計方法執行耗時的主流實現方案,從最基礎的 StopWatch 手動記錄,到高級的 AOP 切面、再到生產級的 Micrometer + Actuator 監控體系,全方位覆蓋應用開發中的各類場景,助你輕松搞定耗時統計,提升系統穩定性與可維護性!

方式一:最簡單直接 —— StopWatch手動計時

這種方式適用于臨時調試,定位具體代碼塊性能問題時很好用。

package com.icoderoad.service;


import org.springframework.stereotype.Service;
import org.springframework.util.StopWatch;


@Service
public class UserService {


    public User findById(Long id) {
        StopWatch watch = new StopWatch();
        watch.start();


        // 模擬業務操作
        User user = userRepository.findById(id).orElse(null);


        watch.stop();
        System.out.println("findById 執行耗時:" + watch.getTotalTimeMillis() + "ms");
        return user;
    }
}

優勢:無需配置、上手簡單

劣勢:代碼侵入性強,不適合全局使用

方式二:面向切面 —— AOP統一攔截統計

借助 Spring AOP,可以無感知地實現方法耗時采集。

首先,添加 AOP 依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

切面實現如下:

package com.icoderoad.aspect;


import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;


@Aspect
@Component
public class PerformanceAspect {


    @Pointcut("execution(* com.icoderoad.service..*(..))")
    public void serviceMethods() {}


    @Around("serviceMethods()")
    public Object logTime(ProceedingJoinPoint joinPoint) throws Throwable {
        StopWatch sw = new StopWatch();
        sw.start();


        Object result = joinPoint.proceed();


        sw.stop();
        System.out.println("方法【" + joinPoint.getSignature() + "】耗時:" + sw.getTotalTimeMillis() + "ms");
        return result;
    }
}

優勢:完全無侵入,集中管理

劣勢:粒度控制較弱,不適合只監控個別方法

方式三:自定義注解 + AOP,精準掌控要點

如果你只想統計某些特定方法的耗時,又不想在方法里寫邏輯,推薦這種方式。

注解定義:

package com.icoderoad.annotation;


import java.lang.annotation.*;


@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface TrackTime {
    String description() default "";
}

切面處理類:

package com.icoderoad.aspect;


import com.icoderoad.annotation.TrackTime;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;


@Aspect
@Component
public class TrackTimeAspect {


    @Around("@annotation(com.icoderoad.annotation.TrackTime)")
    public Object handleTimedMethod(ProceedingJoinPoint joinPoint) throws Throwable {
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        TrackTime annotation = signature.getMethod().getAnnotation(TrackTime.class);


        String desc = annotation.description().isEmpty() ? signature.getMethod().getName() : annotation.description();


        StopWatch sw = new StopWatch();
        sw.start();


        Object result = joinPoint.proceed();


        sw.stop();
        System.out.println("方法[" + desc + "]執行時間:" + sw.getTotalTimeMillis() + "ms");
        return result;
    }
}

使用方法:

package com.icoderoad.service;


import com.icoderoad.annotation.TrackTime;
import org.springframework.stereotype.Service;


@Service
public class ProductService {


    @TrackTime(description = "獲取商品詳情")
    public Product getProductById(Long id) {
        return productRepository.findById(id).orElse(null);
    }
}

優勢:可控性高、便于擴展

劣勢:仍需手動打注解

方式四:Spring Interceptor —— 專注于Controller層

如果你只關心 Web 層接口的耗時統計,用攔截器最合適不過了。

攔截器類:

package com.icoderoad.interceptor;


import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.*;


@Component
public class ApiTimerInterceptor implements HandlerInterceptor {


    private final ThreadLocal<Long> startTime = new ThreadLocal<>();


    @Override
    public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object handler) {
        startTime.set(System.currentTimeMillis());
        return true;
    }


    @Override
    public void afterCompletion(HttpServletRequest req, HttpServletResponse res, Object handler, Exception ex) {
        long duration = System.currentTimeMillis() - startTime.get();
        System.out.println("接口【" + req.getRequestURI() + "】耗時:" + duration + "ms");
        startTime.remove();
    }
}

注冊攔截器:

package com.icoderoad.config;


import com.icoderoad.interceptor.ApiTimerInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;


@Configuration
public class WebMvcConfig implements WebMvcConfigurer {


    private final ApiTimerInterceptor interceptor;


    public WebMvcConfig(ApiTimerInterceptor interceptor) {
        this.interceptor = interceptor;
    }


    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(interceptor).addPathPatterns("/api/**");
    }
}

優勢:Web接口性能監控利器

劣勢:無法統計 Service 等后端業務層邏輯

方式五:Actuator + Micrometer + Prometheus,專業級監控搭檔

適合部署到生產環境,通過可視化儀表盤統一查看性能數據。

添加依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

服務類中記錄方法時間:

package com.icoderoad.service;


import io.micrometer.core.instrument.*;
import org.springframework.stereotype.Service;


@Service
public class OrderService {


    private final MeterRegistry registry;


    public OrderService(MeterRegistry registry) {
        this.registry = registry;
    }


    public Order createOrder(OrderRequest request) {
        Timer.Sample sample = Timer.start(registry);


        Order order = process(request); // 假設業務邏輯處理


        sample.stop(registry.timer("order.create.time"));
        return order;
    }
}

配置 application.yml 暴露端點:

management:
  endpoints:
    web:
      exposure:
        include: prometheus,metrics
  metrics:
    export:
      prometheus:
        enabled: true

優勢:配合Grafana視圖完美呈現,適合線上

 劣勢:配置偏復雜,對初學者門檻較高

方式六:Filter 過濾器方式,全鏈路請求計時

最適合做網關、統一入口類應用的方式之一。

package com.icoderoad.filter;


import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component;
import java.io.IOException;


@Component
public class RequestTimingFilter implements Filter {


    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        long begin = System.currentTimeMillis();


        chain.doFilter(request, response);


        long duration = System.currentTimeMillis() - begin;
        String uri = ((HttpServletRequest) request).getRequestURI();
        System.out.println("請求[" + uri + "]總耗時:" + duration + "ms");
    }
}

優勢:全局統計請求,零業務侵入

劣勢:無法細分業務邏輯耗時

方式七:事件監聽器 —— 輕松統計請求執行時間

使用 Spring 自帶的事件 ServletRequestHandledEvent,簡單高效。

package com.icoderoad.listener;


import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.ServletRequestHandledEvent;


@Component
public class HttpRequestListener implements ApplicationListener<ServletRequestHandledEvent> {


    @Override
    public void onApplicationEvent(ServletRequestHandledEvent event) {
        System.out.println("請求【" + event.getRequestUrl() + "】處理時長:" + event.getProcessingTimeMillis() + "ms");
    }
}

優勢:無侵入、自動觸發

劣勢:僅限于Controller層,無法擴展具體邏輯耗時

最后總結:七種方案對比參考

方式

優勢

劣勢

場景推薦

StopWatch

快速上手

代碼侵入強

臨時測試、調優

AOP

全局統一、代碼無侵入

粒度不夠細

Service層整體監控

注解 + AOP

靈活定制、擴展性強

需手動打標記

關鍵方法性能采集

攔截器 Interceptor

專注接口、配置簡潔

僅限Controller層

Web接口性能分析

Micrometer + Actuator

專業監控、對接Grafana

使用門檻高

生產環境實時監控

Filter

全局請求層統計

粒度粗

網關、統一入口場景

事件監聽器

系統自動監聽

不支持業務內部耗時

簡易接口請求分析

結語:沒有監控的優化都是“空談”

在性能優化的世界里,有一句老話:“你無法優化你不了解的東西(You can't improve what you don't measure)”。無論是對接口響應的監控、還是對業務邏輯執行效率的衡量,方法耗時統計都是系統調優的重要基石。

通過本文介紹的七種耗時統計手段,開發者可以:

  • 快速定位耗時點,找出性能瓶頸;
  • 精細化地監控關鍵業務邏輯;
  • 將系統運行指標納入可觀測體系,助力 DevOps;
  • 在不侵入原有業務邏輯的前提下,實現非侵入式性能分析;
  • 構建符合生產要求的“性能感知型系統”。

每種方案都有其適用場景:手動StopWatch適合快速驗證,AOP適合中大型系統的統一統計,自定義注解+AOP適合重點方法定點監控,攔截器與Filter適合接口請求統計,Micrometer/Actuator則是監控系統集成首選,事件監聽提供了無需改動代碼的全局方案。


責任編輯:武曉燕 來源: 路條編程
相關推薦

2024-10-08 09:06:01

Spring應用程序配置

2011-12-16 14:45:36

JavaJSP

2011-05-30 13:37:46

JSP

2016-09-28 20:05:22

2024-05-23 12:40:06

2022-05-24 14:37:49

React條件渲染

2022-10-27 08:09:33

2023-04-18 15:57:30

2024-07-29 08:00:00

2022-09-30 10:48:12

AR制造業

2025-10-29 01:45:00

toString()SpringJackson

2024-06-19 10:53:45

2021-09-18 16:10:48

Spring BootJava微服務

2020-01-02 16:30:02

Spring BootJava異步請求

2024-04-25 15:52:40

2021-07-02 10:43:52

IT人才首席信息官人才招聘

2016-12-27 19:19:51

2009-10-29 16:32:24

查看Oracle用戶的

2025-11-04 07:43:15

2023-08-10 07:00:06

虛擬代理客戶人工智能
點贊
收藏

51CTO技術棧公眾號

亚洲国产99精品国自产| 91色porny在线视频| 欧美肥臀大乳一区二区免费视频| 色哟哟无码精品一区二区三区| 精品人人视频| 中文字幕乱码久久午夜不卡 | 国产精品第一页在线观看| 羞羞色国产精品网站| 成人美女视频| h片精品在线观看| 97se狠狠狠综合亚洲狠狠| 日本一区二区在线播放| 中文字幕电影av| 亚洲精品亚洲人成在线| 91精品欧美综合在线观看最新 | 丰满熟女人妻一区二区三区| 亚洲涩涩在线| 夜夜精品视频一区二区| 相泽南亚洲一区二区在线播放| 精品国产av一区二区| 黄色在线观看国产| 久久99国产精品视频| 欧美精品高清视频| 88av.com| 在线免费看h| 亚洲最新视频在线观看| 亚洲欧洲一区二区福利| 天堂av在线7| 成熟亚洲日本毛茸茸凸凹| 91精品国产综合久久香蕉的用户体验| 性无码专区无码| 激情综合在线| 欧美日韩国产二区| 午夜精品福利在线视频| 四虎成人精品永久免费av九九| 日韩精品视频在线播放| 9.1在线观看免费| 蜜桃在线一区| 欧美一区二区日韩| 中文字幕12页| 婷婷久久综合九色综合99蜜桃| 色狠狠色噜噜噜综合网| 欧美日韩在线视频一区二区三区| 欧美6一10sex性hd| 亚洲免费色视频| 色乱码一区二区三区熟女| av在线播放网站| 久久精品视频一区二区| 欧美日韩精品久久久免费观看| 天堂在线视频网站| 99在线热播精品免费| 国产三级精品在线不卡| 天堂网av2014| 91亚洲精品久久久蜜桃网站| 激情五月综合色婷婷一区二区| 色噜噜在线播放| av高清久久久| 欧美一区1区三区3区公司| 精品亚洲综合| 欧美国产日韩亚洲一区| 特级西西444www大精品视频| 成a人v在线播放| 中文字幕中文字幕一区| 麻豆md0077饥渴少妇| 超碰免费公开在线| 亚洲精品第1页| 草草视频在线免费观看| 乡村艳史在线观看| 欧美午夜影院一区| 国产精品嫩草影视| 国产成人一二片| 亚洲欧美国产精品| 黄色激情小视频| 欧美欧美天天天天操| 羞羞色国产精品| 波多野结衣一本一道| 精品一区二区三区欧美| 粉嫩精品一区二区三区在线观看 | 国产成人愉拍精品久久| 国产欧美大片| 国产欧美一区二区三区在线看| 国产精品丝袜黑色高跟鞋| 国产a久久麻豆| 欧美日韩亚洲一区二区三区四区| 在线观看麻豆蜜桃| 亚洲国产精品一区二区久久| 亚洲熟妇av一区二区三区 | 国产精品久久久久久久久久久久午夜片 | 亚洲精品一区二区三区av| 麻豆网在线观看| 精品magnet| 亚洲xxx在线观看| 精品福利一区| 日韩在线视频观看| 亚洲精品www久久久久久| 日韩成人精品在线观看| 动漫精品视频| 麻豆传媒视频在线| 欧美日韩一区二区在线| 99国产精品久久久久久| 亚洲综合小说图片| 欧美高清视频在线观看| 欧美性猛交xxxx乱大交hd| 国产激情一区二区三区| 日本中文不卡| av2020不卡| 欧美美女网站色| a级大片在线观看| 伊人激情综合| 成人免费午夜电影| 岛国在线视频免费看| 亚洲一级二级在线| 在线能看的av网站| 国产一区二区区别| 国内免费久久久久久久久久久| 中文字幕日韩国产| 久久久激情视频| 五十路熟女丰满大屁股| 欧美经典一区| 久久久国产精品免费| 国产美女www爽爽爽| 91网站在线播放| 国产日韩av网站| 亚洲国产精品免费视频| 久久久精品国产| 影音先锋国产在线| 国产日韩欧美麻豆| 久久久精品在线视频| 国产成人在线中文字幕| 欧美福利小视频| av中文字幕观看| 亚洲欧洲综合另类| 五月天开心婷婷| 亚洲国产不卡| 91中文在线观看| 黄色在线免费| 91麻豆精品国产自产在线| 波兰性xxxxx极品hd| 蜜桃视频一区二区| 亚洲欧洲久久| 精品久久99| 日韩中文字幕网| 一级片视频免费| 国产午夜精品福利| 高清一区在线观看| 色狮一区二区三区四区视频| 国产精品va在线播放我和闺蜜| 国产色a在线| 在线观看不卡视频| 国产免费嫩草影院| 久久精品国产精品亚洲红杏 | 激情久久中文字幕| 国产成人成网站在线播放青青| 免费在线看污片| 亚洲国产黄色片| 婷婷激情五月网| 亚洲国内高清视频| 亚洲免费一级视频| 欧美一区二区三区激情视频| 国产精品狼人色视频一区| 成年人视频在线看| 欧美喷水一区二区| 日韩精品一区二区亚洲av性色| 国产在线国偷精品免费看| 中国老女人av| 7777精品| 91av在线精品| 美国一级片在线免费观看视频 | 99精品久久只有精品| 欧美日韩亚洲一| 欧美日韩有码| 91在线观看免费高清| 国产99re66在线视频| 日韩风俗一区 二区| 日本丰满少妇做爰爽爽| 自拍偷拍亚洲激情| 性农村xxxxx小树林| 三级久久三级久久久| 国产免费一区二区三区四在线播放| 日韩区一区二| 国产精品wwwww| 欧美私密网站| 亚洲深夜福利在线| 一级黄色片在线看| 亚洲国产cao| 国产视频三区四区| 国产精品一级片在线观看| 国产美女主播在线播放 | 日日欢夜夜爽一区| 久久免费看毛片| 日韩三区视频| 亚洲free嫩bbb| 美女扒开腿让男人桶爽久久软| 日韩在线免费高清视频| 五月婷婷综合久久| 日韩一区二区视频在线观看| 人妻丰满熟妇av无码区| 曰韩精品一区二区| 人人妻人人澡人人爽| 成人免费高清视频| 99九九99九九九99九他书对| 亚洲尤物精选| 热久久最新地址| 第一会所亚洲原创| 久久99精品久久久久久水蜜桃 | 久久精品五月婷婷| 福利一区三区| 国产精品成人v| 白浆在线视频| 欧美成人午夜激情视频| 国产视频福利在线| 日韩精品日韩在线观看| www五月婷婷| 欧美丰满一区二区免费视频| 欧产日产国产69| 亚洲成a人片在线观看中文| 中文字幕五月天| 国产精品久久久久7777按摩| aa一级黄色片| www.成人在线| 中国极品少妇xxxx| 国产高清视频一区| 亚洲图色中文字幕| 久久精品国产第一区二区三区| 两根大肉大捧一进一出好爽视频| 国产精品啊啊啊| 日本精品福利视频| 91亚洲国产| 亚洲午夜高清视频| 大片网站久久| 日本在线播放一区| 少妇精品久久久一区二区| 久久精品第九区免费观看 | 久久伊人国产| 国产精品久久久久久久久久ktv| 伊人成综合网站| 欧美有码在线观看视频| 黄色在线网站噜噜噜| 久久久久久国产精品三级玉女聊斋| 国产成人l区| 麻豆国产va免费精品高清在线| 国内精品久久久久国产| 久久精品99久久香蕉国产色戒| 在线视频婷婷| 久久久99久久精品女同性| 国产黄色小视频在线| 久久夜精品香蕉| 91精选在线| 欧美黄色免费网站| av在线中出| 欧美在线免费观看| 欧美xxx网站| 国产啪精品视频| 99久久99九九99九九九| 97超碰人人看人人 | 国产精品资源站在线| 国产精品一级无码| 盗摄精品av一区二区三区| 亚洲av成人片无码| 91看片淫黄大片一级在线观看| xxxx日本黄色| 亚洲日本电影在线| 国产小视频在线看| 红桃视频成人在线观看| 麻豆精品久久久久久久99蜜桃| 欧美色综合天天久久综合精品| 91theporn国产在线观看| 欧美一区二区三区四区高清| 性生交大片免费看女人按摩| 亚洲电影免费观看高清| 暖暖视频在线免费观看| 日韩在线精品一区| 97超碰在线免费| 国产精品福利小视频| 亚洲精品tv| 国产亚洲欧美另类一区二区三区| 综合伊思人在钱三区| 一区精品在线| 国产日韩1区| 又色又爽又黄视频| 99精品视频免费在线观看| 精品亚洲aⅴ无码一区二区三区| 亚洲品质自拍视频| 国产又大又黄又粗| 欧美一区二区私人影院日本| 性插视频在线观看| 久久精品99久久久香蕉| 色多多在线观看| 91久久国产综合久久91精品网站| 久久aimee| 亚洲第一精品区| 一本色道88久久加勒比精品| 亚洲午夜激情影院| 久久久欧美精品sm网站| 毛片aaaaa| 欧美色图免费看| 青青草手机在线| 欧美激情综合亚洲一二区| 99re66热这里只有精品4| 高清视频一区二区三区| 日韩欧美中字| 无码人妻丰满熟妇区毛片18| 国产乱码精品一区二区三| 91网站免费视频| 亚洲成人tv网| 精品人妻午夜一区二区三区四区| 亚洲欧美综合另类中字| 免费av不卡在线观看| 成人在线小视频| 欧美一站二站| 免费裸体美女网站| 91在线视频播放| 久久精品国产亚洲av无码娇色| 欧美日韩中文字幕一区| 日韩在线免费看| 97精品国产97久久久久久| 日本一区二区三区视频在线看 | av在线网页| 亚洲影影院av| 五月开心六月丁香综合色啪 | 亚洲影院在线播放| 亚洲第一视频网站| 亚洲电影视频在线| 成人做爽爽免费视频| 日韩av有码| 午夜精品在线免费观看| 久久久精品国产免大香伊 | 日韩视频在线一区二区| 国产在线1区| 国产综合福利在线| 久久综合av| 中文字幕视频三区| 中文子幕无线码一区tr | 精品久久久久久久久久久久久久久| 免费av网站在线观看| 国产精品夜间视频香蕉| 欧洲杯足球赛直播| 人人干人人干人人| 国产精品高清亚洲| 国产毛片在线视频| 九色精品美女在线| 白嫩白嫩国产精品| 国产在线精品91| 久久久久久久综合日本| 成人免费毛片视频| 在线国产精品播放| 日韩有码欧美| 国产在线拍揄自揄拍无码| 国产精品亚洲第一区在线暖暖韩国| 日韩a级片在线观看| 精品少妇一区二区三区在线视频| 激情影院在线| 激情久久av| 青青草视频一区| 国产精品国产三级国产传播| 日韩色视频在线观看| 丁香花视频在线观看| 精品无码久久久久久久动漫| 免费在线成人| 在线视频第一页| 制服丝袜亚洲播放| xxx性欧美| 欧美日韩三区四区| 久久99精品久久久久久| 久草视频免费在线播放| 亚洲级视频在线观看免费1级| 美女18一级毛片一品久道久久综合| 午夜精品区一区二区三 | 亚洲午夜福利在线观看| 欧美午夜在线观看| 91网址在线观看| 欧美午夜精品理论片a级大开眼界| 免费看黄色91| 精品无码人妻一区二区三| 国产视频综合在线| 天堂久久一区| 日韩av片在线看| 中文字幕在线观看不卡| 丰满人妻熟女aⅴ一区| 国产第一区电影| 欧美一区成人| 国产免费一区二区三区网站免费| 欧美福利视频一区| 日本黄色免费在线| 三年中文高清在线观看第6集 | 精品女人久久久| 亚洲电影免费观看| 亚洲三级在线| 国产亚洲精品网站| 亚洲女爱视频在线| 国产一区二区三区不卡在线| 亚洲综合色激情五月| 美女诱惑一区| 国产一级片免费| 日韩在线观看免费高清| 天天做夜夜做人人爱精品 | 国产亚洲一区二区在线观看| www.爱爱.com| 国产日韩欧美黄色| 久久精品亚洲一区二区|