Чтобы это работало, вам нужно установить свойство throwExceptionIfNoHandlerFound
в DispecherServlet. Вы можете сделать это с помощью:
spring.mvc.throwExceptionIfNoHandlerFound=true
в application.properties
файле, в противном случае запросы всегда будут перенаправляться сервлету по умолчанию, а исключение NoHandlerFoundException будет выдано.
Проблема в том, что даже при такой конфигурации она не работает. Из документации:
Обратите внимание, что если
org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler is
используется, тогда запросы всегда будут перенаправлены на сервлет по умолчанию
и NoHandlerFoundException никогда не будет выброшено в этом случае.
Поскольку Spring Boot по умолчанию использует org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler
, вам придется переопределить его, используя собственный WebMvcConfigurer
:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@EnableWebMvc
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
// Do nothing instead of configurer.enable();
}
}
Конечно, приведенный выше класс может быть более сложным в вашем случае.