Java 捕获Spring MVC DispatcherServlet异常和ExceptionResolver
我试图为SpringMVC服务的每个请求返回一个有效的JSON主体,无论是正确的还是无效的 使用Java 捕获Spring MVC DispatcherServlet异常和ExceptionResolver,java,spring-mvc,exception-handling,Java,Spring Mvc,Exception Handling,我试图为SpringMVC服务的每个请求返回一个有效的JSON主体,无论是正确的还是无效的 使用@ExceptionHandler和ExceptionHandlerExceptionResolver的组合,DefaultHandlerExceptionResolver和我自己的AbstractHandlerExceptionResolver我能够处理和设置几乎所有发送到有效控制器或被Spring Security拒绝的无效请求的主体 但是,DispatcherServlet引发的错误(如noHa
@ExceptionHandler
和ExceptionHandlerExceptionResolver
的组合,DefaultHandlerExceptionResolver
和我自己的AbstractHandlerExceptionResolver
我能够处理和设置几乎所有发送到有效控制器或被Spring Security拒绝的无效请求的主体
但是,DispatcherServlet
引发的错误(如noHandlerFound
)无法被拦截,因此响应具有有效的HTTP状态代码(如404),但正文包含Tomcat默认XML错误
有人知道如何设置或配置Spring异常解析器,以便拦截所有失败的请求并设置有效的JSON正文吗?Spring如何处理dispatcher servlet的异常解析器:
调度器的异常解决策略可以通过
HandlerExceptionResolver,例如,将某些异常映射到
错误页。默认值为AnnotationMethodHandlerExceptionResolver,
ResponseStatusExceptionResolver和DefaultHandlerExceptionResolver。
这些HandlerExceptionResolver可以通过
应用程序上下文。HandlerExceptionResolver可以提供给任何bean
名称(按类型进行测试)
为了能够支持Dispatcher异常处理重写,您必须实现HandlerExceptionResolver
和Ordered
类,并将实现声明为Springbean。您必须将getOrder
值返回为Integer.MIN\u值
以覆盖任何其他现有处理程序