Глобальный обработчик исключений / @ControllerAdvice при весенней загрузке 3.0 не применяетсяJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Глобальный обработчик исключений / @ControllerAdvice при весенней загрузке 3.0 не применяется

Сообщение Anonymous »

Недавно я перенес свое приложение с Spring Boot 2.1 на Spring Boot 3.0.
Но проблема в том, что теперь есть конечные точки, которые не предоставляют тот же ответ при возникновении ошибки, вместо этого я получаю что-то вроде этого:
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "Failed to convert 'id' with value: 'territory'",
"instance": "/webfront/administration/book/territory"
}

Я добился этого, добавив класс @ControllerAdvice, который является наследником ResponseEntityExceptionHandler.
Однако мне нужна другая информация, ожидаемая информация будет такой:
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "Failed to convert 'id' with value: 'territory'",
"instance": "/webfront/administration/book/territory",
"timestamp": "2023-04-15 12:02:21",
"code" : 24
}

Вот реализация моего совета по контроллеру, который следует применять глобально (для примера есть только одно исключение, но на самом деле их несколько).
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {

private static ErrorResponse mapToErrorResponse(Exception e, ApplicationError applicationError, String errorMessage, HttpStatus status) {
return ErrorResponse.builder(e, status, errorMessage)
.property("code", String.valueOf(applicationError.getCode()))
.property("timestamp", Instant.now())
.build();
}

@ExceptionHandler(FileAccessException.class)
public ErrorResponse fileAccessException(FileAccessException fae) {
log.error("File access Exception", fae);
return mapToErrorResponse(fae, fae.getApplicationError(), fae.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
...
}

По какой-то причине этот обработчик не обнаруживается Spring, и тело исключений продолжает работать как первый пример без моих пользовательских данных.
У меня также есть еще одна проблема, связанная с моим UrlAuthenticationFailureHandler: раньше, когда пользователь пытался получить доступ к несанкционированному маршруту, исключение обрабатывалось, теперь тело всегда пусто. Я попробовал добавить эти записи конфигурации в свой application.yml, но это не имело никакого значения:
server:
error:
include-message: ALWAYS
include-stacktrace: ALWAYS
mvc:
problemdetails:
enabled: true


Подробнее здесь: https://stackoverflow.com/questions/761 ... ing-applie
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Обработчик исключений Spring @Controller и глобальный обработчик исключений. Как вызвать оба
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Глобальный обработчик исключений отменяет обработчик транзакций базы данных
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Глобальный обработчик исключений .Net 8 не пишет ответ. Тело
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Пользовательский @ControllerAdvice в Spring для обработки исключений
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Глобальный обработчик ошибок для приложений React Native (android, ios)
    Anonymous » » в форуме Android
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»