首页 > 解决方案 > 如何使用 AOP 计算控制器类中调用的所有内部服务的响应时间

问题描述

我的 Rest Api 是在 Spring Boot 中开发的,我们使用 Splunk 和 Spring AOP 进行日志记录。我的问题是如何计算所有被调用的内部服务的响应时间。现在,我能够获得端到端的响应时间。我们需要它来在 Splunk 中创建仪表板以跟踪 Api 的性能。

标签: javaspring-bootspring-aopsplunk

解决方案


这是一个使用 AspectJ 的 @Around 注释的示例。

@Aspect
@Configuration
public class MethodExecutionCalculationAspect {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Around("@annotation(com.in28minutes.springboot.tutorial.basics.example.aop.TrackTime)")
    public void around(ProceedingJoinPoint joinPoint) throws Throwable {
        long startTime = System.currentTimeMillis();

        joinPoint.proceed();

        long timeTaken = System.currentTimeMillis() - startTime;
        logger.info("Time Taken by {} is {}", joinPoint, timeTaken);
    }
}

所以,我认为这就是你想要做的。


推荐阅读