让我们看下面的示例代码:

@RequestMapping(value = "/", method = RequestMethod.POST)
public ResponseEntity<Car> update(@RequestBody Car car) {
    ...
}


我有很多类似的控制器和方法。我想记录所有RequestBody参数(如Car)。因此,我尝试使用AbstractRequestLoggingFilter(afterRequest方法)和HandlerInterceptor。但是我看不到一种方法,如何在这些类的帮助下获取方法的参数。

最佳答案

您可以在HandlerMethod.getMethodParameters()中使用HandlerInterceptor

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
    throws Exception {

    HandlerMethod handlerMethod = (HandlerMethod) handler;
    MethodParameter[] methodParameters = handlerMethod.getMethodParameters();
    // Inspect & log parameters...

}

09-25 22:18