← 返回项目总览
项目简介
基于 Spring Boot AOP 的方法执行耗时监控工具,通过 @MethodDuration 注解标记需要监控的方法,自动追踪 Controller 和 Service 层方法的执行时间。支持嵌套调用链追踪,以树形结构输出调用链日志,清晰展示方法间的调用关系与耗时分布。
使用示例
@MethodDuration
public class UserController {
@GetMapping("/user/{id}")
public User getUser(long id) {
return userService.getById(id);
}
}
日志输出效果
[Controller] UserController.getUser() ─── 125ms
└─ [Service] UserService.getById() ─── 98ms
└─ [Service] CacheService.get() ─── 3ms
└─ [Service] UserDao.selectById() ─── 89ms
核心功能
@MethodDuration 注解 — 声明式标记需要监控的方法
- 分层切面 — Controller 和 Service 层独立切面,精准控制
- 嵌套调用链追踪 — ThreadLocal 实现的
DurationContextHolder 维护调用栈
- 树形日志输出 — 清晰展示方法调用层次与各层耗时
- 可配置监控范围 — 通过包路径和类名指定监控范围
- 开关控制 —
xianyu.method.duration.enabled 配置项一键开关
技术栈一览
Java 17
Spring Boot 3.2
Spring AOP
ThreadLocal
Lombok
Maven