在
DispatcherServlet类; 它发送错误响应而无需打扰调用异常处理程序(默认情况下)。
由于4.0.0.RELEASE这种行为可以简单地改变与throwExceptionIfNoHandlerFound参数:
设置在找不到此请求的处理程序时是否引发
NoHandlerFoundException。然后可以使用HandlerExceptionResolver或@ExceptionHandler控制器方法捕获此异常。
XML配置:
<servlet> <servlet-name>rest-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>throwExceptionIfNoHandlerFound</param-name> <param-value>true</param-value> </init-param></servlet>
基于Java的配置:
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { void customizeRegistration(ServletRegistration.Dynamic registration) { registration.setInitParameter("throwExceptionIfNoHandlerFound", "true"); } ...}然后
NoHandlerFoundException可以这样处理:
@ControllerAdvicepublic class GlobalExceptionHandler extends ResponseEntityExceptionHandler { @Override ResponseEntity handleNoHandlerFoundException(NoHandlerFoundException ex, HttpHeaders headers, HttpStatus status, WebRequest request) { // return whatever you want }}


