0

我浏览了链接:如何在 Spring MVC 中的 @controllerAdvice 或 @RestControllerAdvice 中找到控制器名称?很多次,但我希望在 @ControllerAdvice 类中获取控制器方法名。

这是我的 CustomHandler 类。

@ControllerAdvice
public class CustomExceptionHandler extends ResponseEntityExceptionHandler {
    ........
    ..........
    ..........

    @ExceptionHandler({DataExistsException.class})
    public ResponseEntity<Object> handleDataExistsException(RuntimeException e, WebRequest request, HttpServletRequest httpRequest, HttpServletResponse response, HandlerMethod handlerMethod) {
        // Here I am looking to print Controller endpoint method name

        LoggingUtil.printJsonReq(httpRequest, HttpStatus.valueOf("BAD_REQUEST").value(), LoggingUtil.getTime(httpRequest), null, response);
        return handleExceptionInternal(e, getErrors(error), getHeaders(), HttpStatus.BAD_REQUEST, request);
    }
}
4

2 回答 2

0

HandlerMethod应该给你这个信息。引用文档:

封装有关由方法bean组成的处理程序方法的信息。提供对方法参数、方法返回值、方法注解等的便捷访问。

所以你可以使用:

Method method = handlerMethod.getMethod();
于 2020-01-23T16:59:01.480 回答
0

您可以从 RuntimeException 中找到方法名称,这样就可以了

 e.getStackTrace()[0].getMethodName();
于 2020-01-23T17:00:12.537 回答