我正在尝试为Spring MVC服务的每个请求返回一个有效的JSON主体,无论是正确的还是无效的。
使用@ExceptionHandler
以及ExceptionHandlerExceptionResolver
,DefaultHandlerExceptionResolver
和我自己的AbstractHandlerExceptionResolver
的组合,我能够处理并设置几乎所有发送到的无效请求的正文一个有效的控制器或被Spring Security拒绝。
但是,DispatcherServlet
之类的noHandlerFound
引发的错误无法被截获,因此响应具有有效的HTTP状态代码,如404,但正文包含Tomcat默认的XML错误。 / p>
有人知道如何设置或配置Spring Exception Resolver,以便截获所有失败的请求并设置有效的JSON主体吗?
答案 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异常处理覆盖,你必须实现HandlerExceptionResolver
和Ordered
类,并将实现声明为spring bean。您必须将getOrder
值作为Integer.MIN_VALUE
返回以覆盖任何其他现有处理程序。