From fad2760d2e427abe66a71d70b34f9c9009ae7ae0 Mon Sep 17 00:00:00 2001 From: yinhuaiwei Date: Wed, 17 Dec 2025 10:37:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=97=A5=E5=BF=97=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E8=80=97=E6=97=B6=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/inspect/nvr/aop/TimeTrace.java | 12 +++++++++ .../com/inspect/nvr/aop/TimeTraceAspect.java | 26 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/main/java/com/inspect/nvr/aop/TimeTrace.java create mode 100644 src/main/java/com/inspect/nvr/aop/TimeTraceAspect.java diff --git a/src/main/java/com/inspect/nvr/aop/TimeTrace.java b/src/main/java/com/inspect/nvr/aop/TimeTrace.java new file mode 100644 index 0000000..938b57b --- /dev/null +++ b/src/main/java/com/inspect/nvr/aop/TimeTrace.java @@ -0,0 +1,12 @@ +package com.inspect.nvr.aop; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface TimeTrace { + String value() default ""; +} diff --git a/src/main/java/com/inspect/nvr/aop/TimeTraceAspect.java b/src/main/java/com/inspect/nvr/aop/TimeTraceAspect.java new file mode 100644 index 0000000..ca869bb --- /dev/null +++ b/src/main/java/com/inspect/nvr/aop/TimeTraceAspect.java @@ -0,0 +1,26 @@ +package com.inspect.nvr.aop; + +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.stereotype.Component; + +@Aspect +@Component +@Slf4j +public class TimeTraceAspect { + @Around("@annotation(TimeTrace)") + public Object trace(ProceedingJoinPoint joinPoint) throws Throwable { + long start = System.currentTimeMillis(); + try { + return joinPoint.proceed(); + } finally { + long end = System.currentTimeMillis(); + long duration = end - start; + // 获取方法签名 + String methodName = joinPoint.getSignature().toShortString(); + log.info("方法 {} 执行耗时: {} ms", methodName, duration); + } + } +}