使用ExceptionResolver捕获Spring MVC DispatcherServlet异常

时间:2012-11-02 14:35:35

标签: java spring-mvc exception-handling

我正在尝试为Spring MVC服务的每个请求返回一个有效的JSON主体,无论是正确的还是无效的。

使用@ExceptionHandler以及ExceptionHandlerExceptionResolverDefaultHandlerExceptionResolver和我自己的AbstractHandlerExceptionResolver的组合,我能够处理并设置几乎所有发送到的无效请求的正文一个有效的控制器或被Spring Security拒绝。

但是,DispatcherServlet之类的noHandlerFound引发的错误无法被截获,因此响应具有有效的HTTP状态代码,如404,但正文包含Tomcat默认的XML错误。 / p>

有人知道如何设置或配置Spring Exception Resolver,以便截获所有失败的请求并设置有效的JSON主体吗?

1 个答案:

答案 0 :(得分:0)

有一节解释了如何为调度程序servlet执行spring处理异常解析程序。 [http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/DispatcherServlet.html][1]

  

可以通过a指定调度程序的异常解析策略   HandlerExceptionResolver,例如将某些异常映射到   错误页面。默认为AnnotationMethodHandlerExceptionResolver,   ResponseStatusExceptionResolver和DefaultHandlerExceptionResolver。   可以通过覆盖这些HandlerExceptionResolvers   应用背景。 HandlerExceptionResolver可以被赋予任何bean   名称(按类型测试)。

为了能够支持Dispatcher异常处理覆盖,你必须实现HandlerExceptionResolverOrdered类,并将实现声明为spring bean。您必须将getOrder值作为Integer.MIN_VALUE返回以覆盖任何其他现有处理程序。