Мне нужно проверить 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
} }