AOP实现监控方法执行耗时

该博客主要展示了如何使用Spring AOP实现方法执行的监控,通过StopWatch记录并打印方法执行时间,便于性能分析。切入点定义为`com.xxx.batching`包及其子包下的所有方法。当方法执行时,会记录并输出详细的执行信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


@AllArgsConstructor
@Aspect
@Slf4j
@Component
public class StopWatchPrinter implements Serializable {
    private static final long serialVersionUID = -8557926864119671723L;
    private static final String DELIMITER = "#";
    private static final String PREFIX = "_threadId";

    /**
     * com.xxx.batching 包及所有子包下任何类的任何方法
     */
    @Pointcut("execution(* com.xxx.batching..*.*(..))")
    public void pointCut(){}

    @Around("pointCut()")
    public Object watch(ProceedingJoinPoint pjp){
        StopWatch watcher = new StopWatch(new StringJoiner(DELIMITER)
                .add(pjp.getSignature().toString())
                .add(PREFIX)
                .add(Thread.currentThread().getName()).toString());

        watcher.start(pjp.getSignature().toString());
        Object proceed = null;
        try {
            proceed = pjp.proceed();
        } catch (Throwable e) {
            log.error("watch error",e);
        }
        watcher.stop();
        log.info("###watch end...print:{}",watcher.prettyPrint());
        return proceed;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值