小编San*_*ozi的帖子

如何在Spring Boot中分析复杂的HTTP请求处理?

我有复杂的@RestController方法,如下所示:

@PostMapping("{id}")
@PreAuthorize("hasRole('ADMIN')")
@Transactional
public Response handleRequest(@PathVariable("id") long id, @RequestBody @Valid Request request) {
    return service.handleRequest(id, request);
}
Run Code Online (Sandbox Code Playgroud)

我们的请求处理非常慢,因此我们想检查在特定的请求处理任务上花费了多少时间。不幸的是,很多事情都是在我的方法之外完成的,例如:

  • 反序列化请求
  • 证实
  • 权限检查
  • 开始和结束交易
  • 序列化响应

有没有办法简单地测量所有这些部分?也许是一组接收跟踪消息的记录器,以便我可以在每一步结束时提取时间戳?

我现在看到的唯一方法是更改​​该方法以接受HttpServletRequest和HttpServletResponse并在方法主体中执行这些部分。但是那样一来,我将失去很多Spring Boot的好处。

java spring profiling spring-boot spring-restcontroller

6
推荐指数
1
解决办法
156
查看次数