欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Spring AOP監(jiān)控指定方法執(zhí)行時間的代碼詳解

 更新時間:2024年08月06日 09:46:50   作者:齊展飛  
這篇文章主要介紹了使用Spring AOP監(jiān)控指定方法執(zhí)行時間,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

一、加入pom依賴

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

二、切面類和注解

import java.lang.annotation.*;

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

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;

import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;

@Aspect
@Slf4j
@Component
public class AroundAspect {

    @Around("@annotation(aroundRunTime)")
    public Object aroundLog(ProceedingJoinPoint point, AroundRunTime aroundRunTime) {

        StringBuilder sb = new StringBuilder();
        long start = 0;
        try {
            MethodSignature signature = (MethodSignature) point.getSignature();
            Method method = signature.getMethod();
            sb.append("\n<===================================START===================================>\n");
            sb.append("運行時間:>").append(getStringByDate(new Date())).append("\n");
            String methodName = method.getName();
            sb.append("方法:> ").append(method.getDeclaringClass().getName() + "." + methodName).append("\n");

            start = System.currentTimeMillis();
            Object proceed = point.proceed();正常執(zhí)行方法

            return proceed;
        } catch (RuntimeException e) {
            sb.append("RuntimeException:>").append(e.getMessage()).append("\n");
            throw e;
        } catch (Throwable throwable) {
            sb.append("Throwable:>").append(throwable.getMessage()).append("\n");
            throw new RuntimeException("系統(tǒng)異常!");
        }finally {
            long end = System.currentTimeMillis();
            long time = end-start;
            sb.append("運行時間 :> ").append("方法運行時間為"+(time/1000)+"." + (time%1000)+"秒").append("\n");
            sb.append("<====================================END====================================>\n");
            log.info(sb.toString());
        }
    }

    public static String getStringByDate(Date date) {
        try {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

三、執(zhí)行方法

    @AroundRunTime
    @GetMapping("test")
    public void test() throws Exception {
        Thread.sleep(1000);
    }

輸出臺結(jié)果

<===================================START===================================>
運行時間:>2024-08-05 19:34:47
方法:> com.qbh.controller.TestController.test
運行時間 :> 方法運行時間為1.15秒
<====================================END====================================>

到此這篇關(guān)于使用Spring AOP監(jiān)控指定方法執(zhí)行時間的代碼詳解的文章就介紹到這了,更多相關(guān)Spring AOP監(jiān)控執(zhí)行時間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Hibernate中Session增刪改查操作代碼詳解

    Hibernate中Session增刪改查操作代碼詳解

    這篇文章主要介紹了Hibernate中Session增刪改查操作代碼詳解,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • SpringCloud應(yīng)用idea實現(xiàn)可相互調(diào)用的多模塊程序詳解

    SpringCloud應(yīng)用idea實現(xiàn)可相互調(diào)用的多模塊程序詳解

    IDEA 全稱 IntelliJ IDEA,是java編程語言的集成開發(fā)環(huán)境。IntelliJ在業(yè)界被公認(rèn)為最好的Java開發(fā)工具,尤其在智能代碼助手、代碼自動提示、重構(gòu)、JavaEE支持、各類版本工具(git、svn等)、JUnit、CVS整合、代碼分析、 創(chuàng)新的GUI設(shè)計等方面的功能可以說是超常的
    2022-07-07
  • Struts2框架初學(xué)接觸

    Struts2框架初學(xué)接觸

    本文主要給大家從初學(xué)者的角度介紹了Struts2框架結(jié)構(gòu)和基本頁面代碼等內(nèi)容,一起來學(xué)習(xí)一下。
    2017-11-11
  • Netty分布式從recycler對象回收站獲取對象過程剖析

    Netty分布式從recycler對象回收站獲取對象過程剖析

    這篇文章主要為大家介紹了Netty分布式從recycler獲取對象的過程源碼剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • SpringBoot常用注解詳細(xì)整理

    SpringBoot常用注解詳細(xì)整理

    大家好,本篇文章主要講的是SpringBoot常用注解詳細(xì)整理,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • springboot項目配置多個kafka的示例代碼

    springboot項目配置多個kafka的示例代碼

    這篇文章主要介紹了springboot項目配置多個kafka,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Java實現(xiàn)提取Word文檔表格數(shù)據(jù)

    Java實現(xiàn)提取Word文檔表格數(shù)據(jù)

    使用Java實現(xiàn)Word文檔表格數(shù)據(jù)的提取,可以確保數(shù)據(jù)處理的一致性和準(zhǔn)確性,同時大大減少所需的時間和成本,下面我們來看看具體實現(xiàn)方法吧
    2025-01-01
  • Java利用Socket類實現(xiàn)TCP通信程序

    Java利用Socket類實現(xiàn)TCP通信程序

    TCP通信能實現(xiàn)兩臺計算機之間的數(shù)據(jù)交互,通信的兩端,要嚴(yán)格區(qū)分為客戶端與服務(wù)端,下面我們就來看看Java如何利用Socket類實現(xiàn)TCP通信程序吧
    2024-02-02
  • 關(guān)于Cannot?resolve?com.microsoft.sqlserver:sqljdbc4:4.0報錯問題解決辦法

    關(guān)于Cannot?resolve?com.microsoft.sqlserver:sqljdbc4:4.0報錯問題解

    這篇文章主要給大家介紹了關(guān)于Cannot?resolve?com.microsoft.sqlserver:sqljdbc4:4.0報錯問題的解決辦法,這個是在pom文件中添加依賴出現(xiàn)報錯問題,需要的朋友可以參考下
    2024-02-02
  • Shiro的運行大致流程詳解

    Shiro的運行大致流程詳解

    這篇文章主要介紹了Shiro的運行大致流程詳解,Shiro和SpringSecurity都是Java領(lǐng)域中常用的安全框架,它們都提供了身份認(rèn)證和授權(quán)功能,可以幫助開發(fā)者快速構(gòu)建安全的應(yīng)用程序,需要的朋友可以參考下
    2023-07-07

最新評論