Не срабатывает обработчик ошибки 404. Приложение Spring

Рейтинг: 1Ответов: 1Опубликовано: 08.08.2023

Разрабатываю сайт на Spring. Если перейти по бессмысленному url, то ожидаемо получаем ошибку 404:

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Aug 08 19:58:48 MSK 2023
There was an unexpected error (type=Not Found, status=404).
No message available

Я хочу обработать эту ошибку, что бы вместо этого сообщения появлялась страница error404.html. Для этого написан вот такой код:

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.NoHandlerFoundException;

@ControllerAdvice
public class CustomErrorController {

    @ExceptionHandler(NoHandlerFoundException.class)
    public String handleNotFoundError() {
        System.out.println("Ошибка 404!");
        return "error404";
    }
}

Однако, страница error404.html не загружается и в консоль сообщение "Ошибка 404!" не выводится. Почему это происходит?

P.S. error404.html лежит там же где остальные temlates файлы. Также, в файле application.properties указал:

spring.mvc.throw-exception-if-no-handler-found=true

Ответы

▲ 0

Помимо строки

spring.mvc.throw-exception-if-no-handler-found=true

в .properties-файл надо также добавить строку

spring.web.resources.add-mappings=false

Итого получится:

spring.mvc.throw-exception-if-no-handler-found=true
spring.web.resources.add-mappings=false

Если версия Spring-а новая (сравнительно новая), то такое решение должно сработать.