Spring Boot по умолчанию возвращает тело ответа для исключений, которое отвечает моим потребностям, из коробки:
{
"timestamp": 1587794161453,
"status": 500,
"error": "Internal Server Error",
"exception": "javax.persistence.EntityNotFoundException",
"message": "No resource exists for the given ID",
"path": "/my-resource/1"
}
Однако я хотел бы настроить код ответа для различных типов исключений, выданных моим приложением , Некоторые из исключений не принадлежат мне, поэтому я не могу просто прикрепить аннотацию @ResponseStatus
к классу исключений. Я пытаюсь использовать метод @ExceptionHandler
с @ResponseStatus
, но это перезаписывает тело ответа, чего не произойдет sh. Например, я хотел бы отобразить javax.persistence.EntityNotFoundException
для возврата кода состояния 404.
@ExceptionHandler
@ResponseStatus(HttpStatus.NOT_FOUND)
public void handleEntityNotFoundException(EntityNotFoundException e) {
// This method returns an empty response body
}
Этот вопрос похож на мой, но он также пытается настроить тело ответа. Я надеюсь, что есть более короткий и более идиоматический способ настройки только кода состояния, а не тела.