Spring Boot: отображение страниц ошибок за пределами Spring MVC
Для приложений, которые не используют Spring MVC, вы можете использовать интерфейс ErrorPageRegistrar для прямой регистрации ErrorPages. Эта абстракция работает непосредственно с нижележащим встроенным контейнером сервлета и работает, даже если у вас нет Spring MVC DispatcherServlet.
@Bean
public ErrorPageRegistrar errorPageRegistrar(){
return new MyErrorPageRegistrar();
}
// ...
private static class MyErrorPageRegistrar implements ErrorPageRegistrar {
@Override
public void registerErrorPages(ErrorPageRegistry registry) {
registry.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400"));
}
}
Если вы регистрируете ErrorPage с путем, который в конечном итоге обрабатывается фильтром (как это происходит в некоторых не-Spring веб-инфраструктурах, таких как Jersey и Wicket), тогда фильтр должен быть явно зарегистрирован как диспетчер ошибок, как показано в следующем примере:
@Bean
public FilterRegistrationBean myFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new MyFilter());
...
registration.setDispatcherTypes(EnumSet.allOf(DispatcherType.class));
return registration;
}
Обратите внимание, что по умолчанию FilterRegistrationBean не включает тип диспетчера ERROR.
ПРЕДУПРЕЖДЕНИЕ. При развертывании в контейнере сервлетов Spring Boot использует свой фильтр страниц ошибок, чтобы переслать запрос со статусом ошибки на соответствующую страницу ошибки. Запрос может быть перенаправлен только на правильную страницу ошибки, если ответ еще не был принят. По умолчанию WebSphere Application Server 8.0 и более поздних версий фиксирует ответ при успешном завершении метода обслуживания сервлета. Вы должны отключить это поведение, установив com.ibm.ws.webcontainer.invokeFlushAfterService в false.
Читайте также:
- Spring Boot: разработка веб-приложений
- Spring Boot: автоконфигурация Spring MVC
- Spring Boot: пользовательские сериализаторы и десериализаторы JSON
- Spring Boot: статический контент
- Spring Boot: сопоставление путей и согласование контента
- Spring Boot: шаблонизаторы
- Spring Boot: обработка ошибок
- Spring Boot: пользовательские страницы ошибок
Комментарии
Отправить комментарий