Я создаю API с использованием Spring Boot. Я установил фильтр проверки подлинности, чтобы захватить токен из заголовка запроса и аутентифицировать его. Если пользователь не может быть найден с использованием токена, генерируется исключение InvalidWSUserException.Spring boot @ExceptionHandler не улавливает соответствующее исключение
Я создал класс для хранения ряда @ExceptionHandlers, чтобы я мог поймать InvalidWSUserException и ответить строкой JSON, сообщающей запрашивающему клиенту, что токен в их запросе был недействительным.
У меня было это работа над другим проектом, но я, похоже, не могу заставить его работать в этом новом проекте.
Исключить InvalidWSUserException, поскольку обработчик должен обрабатывать ответ;
public class InvalidWSUserException extends RuntimeException {
}
Я определил класс обработчика как таковой;
@ControllerAdvice
public class ExceptionController {
@ExceptionHandler(value=InvalidWSUserException.class)
public ResponseEntity invalidWSUserException(InvalidWSUserException exception) {
return new WSResponse().send(HttpStatus.UNAUTHORIZED, "Invalid token.");
}
}
У меня была проблема в предыдущем проекте, где класс, который бросает исключение не было реализованным к весне через Bean, но я проверил этот класс, и класс, который возводит исключение создается с помощью @Autowired аннотации.
Я пытаюсь понять, почему @ExceptionHandler не делает то, что я думаю, что это должно.
Чтобы подтвердить вывод, я вижу в браузере ошибку 500 json; где, как это должно быть EntityResponse от @ExceptionHandler
{
"timestamp": 1470833849289,
"status": 500,
"error": "Internal Server Error",
"exception": "digital.sheppard.exceptions.InvalidWSUserException",
"message": "No message available",
"path": "/api/product"
}