Как вернуть сопоставление исключений по умолчанию, которое было в Spring Boot 1.5? - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть приложение Jersey с весенней загрузкой, я обновил его с Spring Boot 1.5.4 (платформа: Brussels-SR3) до Boot 2.0.1 (платформа: Cairo-RELEASE), которое принесло версию Jersey с 2.25.1до 2.26.

Перед обновлением, когда приложение выдало необработанную ошибку, приложение вернуло бы ответ, подобный следующему:

{
    "timestamp": 1524060527236, "status": 500, "error": "Internal Server Error",
    "exception": "java.lang.IllegalStateException", "message": "<example message>",
    "path": "/ws/api/example/endpoint"
}

после обновления возвращается то же выполнение:

{
    "timestamp": "2018-04-24T17:00:06.151+0000", "status": 500, "error": "Internal Server Error",
    "message": "<example message>", "path": "/ws/api/example/endpoint"
}

Я могу работать с другим форматом отметки времени, но потеря класса исключений является проблемой.

Я пытался отладить сопоставление исключений в джерси, но я не знаком с кодомбаза и кажется довольно сложной.Я не мог найти, где происходит сопоставление.Я также не смог найти упоминаний в документах или примечаниях к выпуску об изменении сопоставления исключений.

Исходя из вышеизложенного и комментариев ниже, я полагаю, это изменение относится к Spring.

Итак,что изменилось и как вернуть старое поведение?

1 Ответ

0 голосов
/ 24 апреля 2018

Это сообщение об ошибке не из Джерси.На самом деле он создается, когда вы включаете модуль spring-boot-starter-web в свой проект.Основываясь на комментарии Энди Уилкинсона , мы можем легко переопределить атрибуты JSON, создав бин ErrorAttributes.Чтобы добавить исключение, мы можем просто вернуть DefaultErrorAttributes, создав его, используя флаг конструктора для включения исключения.

@Bean
public ErrorAttributes errorAttributes() {
    return new DefaultErrorAttributes(true);
}

Я протестировалэто и включает исключение, как и ожидалось.

...