繁体   English   中英

使用ExceptionResolver捕获Spring MVC DispatcherServlet异常

[英]Capture Spring MVC DispatcherServlet exceptions with ExceptionResolver

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

使用@ExceptionHandler以及ExceptionHandlerExceptionResolverDefaultHandlerExceptionResolver和我自己的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异常处理覆盖,你必须实现HandlerExceptionResolverOrdered类,并将实现声明为spring bean。 必须将getOrder值作为Integer.MIN_VALUE返回以覆盖任何其他现有处理程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM