SpringBoot整合AOP实现打印方法执行时间切面
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
代码
创建注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 自定义的注解
* @MethodExecutionTime
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MethodExecutionTime {
}
AOP拦截注解
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
/**
* 被@MethodExecutionTime注解的方法计算其执行时间并输出
*/
@Aspect
@Component
public class MethodExecutionTimeAspect {
@Around("@annotation(com.*.annotation.MethodExecutionTime)")
public Object logMethodExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
String methodName = joinPoint.getSignature().getName();
long startTime = System.currentTimeMillis();
Object result = joinPoint.proceed();
long endTime = System.currentTimeMillis();
System.out.println("Method: " + methodName + " Execution Time: " + (endTime - startTime) + " milliseconds");
return result;
}
}
使用
将@MethodExecutionTime用在Service、Component等呗spring容器托管的bean的方法上。实现方法执行时间的监测
如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ ~

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
2021-04-26 Mybatis捕获异常
2020-04-26 IDEA快速返回上次代码的位置
2020-04-26 一级建造师
2018-04-26 设计模式-状态模式(25)
2018-04-26 设计模式-访问者模式(24)