当前位置: 首页 > 知识库问答 >
问题:

springboot中API调用响应时间的跟踪

商和雅
2023-03-14
@RequestMapping(value="/Students", method = RequestMethod.GET)
    public ResponseEntity<List<Students>> getStudents()
    {
        long beginTime = System.currentTimeMillis();
        List<Students> students =  (List<Students>) repository.findAll();
        if(students.isEmpty())
        {
            return new ResponseEntity(HttpStatus.NO_CONTENT);
        }
        long responseTime = System.currentTimeMillis() - beginTime;
        logger.info("Response time for the call was "+responseTime);
        return new ResponseEntity(students, HttpStatus.OK);
    }

有没有更好的方法来追踪电话的时间?

共有1个答案

姜学海
2023-03-14

您可以使用springboot的Around Advice,并在Advice中记录时间。它的工作方式是,一旦对控制器发出调用,Around通知就会拦截它并启动计时器(以记录所用的时间)。根据建议,我们使用jointpoint.proceed()方法进入主控制器。一旦控制器返回该值,您就可以记录计时器值。返回对象。

下面是示例代码:

在build.grale include中

 compile("org.aspectj:aspectjweaver:1.8.8")
@Component
@Aspect
public class advice{

@Around(("@annotation(logger)")
   public Object loggerAspect(ProceedingJoinPoint joinPoint){
    // start the Timer
    Object object = jointPoint.proceed();
    // log the timer value
    return object;
  }
}

在controller方法中添加注释@logger。你可以走了。

希望这有帮助。

您可以参考链接获得完整的解释。

 类似资料:
  • 我目前正在使用Jmeter测试API的响应时间。让我们称之为API A。如果API A调用API B,而API B托管在同一台服务器上,但端口不同,那么我有没有办法使用JMeter捕获API B的响应时间呢? 我意识到这里有一个类似的问题,试图完成同样的事情,但它对我不起作用。我看不到对API B的内部调用。

  • 嗨,我正在为后端使用Laravel API,并在React中使用Redux进行登录。嗯,我调用API,我希望laravel API传递正在发生的事情的精确错误,例如用户不存在。问题是当我想在使用axios进行的调用的catch部分访问Mesage时 Laravel登录部分 使用axios响应调用 我在网络控制台中得到的响应 xhr.js:177邮政http://127.0.0.1:8000/api

  • 我正在开发一个Spring boot应用程序,当响应时间超过30秒时,我必须抛出一个错误。 因为我正在使用应用程序。yml,我试过了 因为它不工作,尝试使用application.properties-. it不工作。 试图找出如何在这两种情况下抛出系统错误。即当系统空闲后发生超时且响应时间超过30秒时

  • 从我的后端应用程序(springboot,java8)中,我将进行多个外部api调用。我需要将所有请求和响应数据(包括头、请求和响应体)记录到数据库(MongoDB)中。 下面是我的示例代码,这是我如何尝试捕获每个外部api调用的请求和响应。在异常情况下,我将存储状态为“失败”。 在我的项目中,将在新的第三方api集成上添加多个模块,因此在每个模块中,对于每个不同的外部api调用,我必须捕获所有这

  • 我正在尝试在y应用程序中实现REST APIendpoint。 因此,我编写了包含映射为(Heroku/ResSources)的方法的类。但是当我试图调用它时,我得到一个404错误,因为没有找到。但是,我甚至不想获得视图,而是要获得HTTP响应。