Исключение в Spring AOP само по себе не обрабатывается через RestControllerAdvice - PullRequest
0 голосов
/ 27 марта 2020

Мне нужно проверить HttpServletRequest для определенных атрибутов на моем уровне обслуживания, прежде чем продолжить. Я создал @Before advice, обратите внимание, что метод AOP выдает Exception. Я хочу, чтобы исключение, генерируемое этим методом, должно обрабатываться RestControllerAdvice. Я вижу, что метод AOP выполняется, но DataNotValidException не обрабатывается RestControllerAdvice. RestConrollerAdvice работает нормально, если есть какие-либо исключения при проверке других параметров или какие-либо исключения в RestController.

@Before("execution(* com.mycom.service.app.myappName.handler*.*.*(..)) && args(httpServletRequest,..)" )
public void validateRequest(JoinPoint joinPoint, HttpServletRequest httpServletRequest) throws DataNotValidException {

Это мой @RestControllerAdvice. Я также пытался переопределить handleExceptionInternal.

publi c String handleLinkage (окончательный HttpServletRequest httpServletRequest, @Valid UserLinkRequest userLinkReqeust, окончательный HttpHeaders httpHeaders) {

    @RestControllerAdvice
    @Slf4j
    public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {

        @ExceptionHandler(value = { InvalidFormatException.class, DataNotValidException.class, Exception.class,
                SQLException.class })
        private ResponseEntity<ResponseObjectData> handleAllException(Exception exception, HttpHeaders headers,
                WebRequest request, HandlerMethod handlerMethod) {
           // logErrorNBuildResponse
        }
    @Override
    protected ResponseEntity<Object> handleExceptionInternal(
            Exception ex, @Nullable Object body, HttpHeaders headers, HttpStatus status, WebRequest request) {
        // logErrorNBuildResponse
     } }
...