[英]Capture Spring MVC DispatcherServlet exceptions with ExceptionResolver
我试图为Spring MVC服务的每个请求返回一个有效的JSON主体,无论是正确的还是无效的。
使用@ExceptionHandler
以及ExceptionHandlerExceptionResolver
, DefaultHandlerExceptionResolver
和我自己的AbstractHandlerExceptionResolver
的组合,我能够处理和设置几乎所有无效请求的主体,这些请求被分派到有效的控制器或被Spring Security拒绝。
但是, DispatcherServlet
抛出的错误(如noHandlerFound
)无法被拦截,因此响应具有有效的HTTP状态代码,如404,但正文包含Tomcat默认的XML错误。
有人知道如何设置或配置Spring异常解析器,以便截获所有失败的请求并设置有效的JSON正文吗?
有一节解释了如何为调度程序servlet执行spring处理异常解析程序。 [ http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/DispatcherServlet.html][1]
可以通过HandlerExceptionResolver指定调度程序的异常解析策略,例如将某些异常映射到错误页面。 默认值为AnnotationMethodHandlerExceptionResolver,ResponseStatusExceptionResolver和DefaultHandlerExceptionResolver。 可以通过应用程序上下文覆盖这些HandlerExceptionResolvers。 HandlerExceptionResolver可以被赋予任何bean名称(它们按类型进行测试)。
为了能够支持Dispatcher异常处理覆盖,你必须实现HandlerExceptionResolver
和Ordered
类,并将实现声明为spring bean。 必须将getOrder
值作为Integer.MIN_VALUE
返回以覆盖任何其他现有处理程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.