@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;
}
}
AOP实现监控方法执行耗时
最新推荐文章于 2022-05-12 17:02:47 发布
该博客主要展示了如何使用Spring AOP实现方法执行的监控,通过StopWatch记录并打印方法执行时间,便于性能分析。切入点定义为`com.xxx.batching`包及其子包下的所有方法。当方法执行时,会记录并输出详细的执行信息。
721

被折叠的 条评论
为什么被折叠?



