gpt4 book ai didi

java - 使用 ExceptionResolver 捕获 Spring MVC DispatcherServlet 异常

转载 作者:搜寻专家 更新时间:2023-11-01 03:54:24 61 4
gpt4 key购买 nike

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

使用 @ExceptionHandlerExceptionHandlerExceptionResolverDefaultHandlerExceptionResolver 和我自己的 AbstractHandlerExceptionResolver 的组合我能够处理并为几乎所有发送到有效 Controller 或被 Spring Security 拒绝的无效请求设置主体。

但是,DispatcherServlet 抛出的错误,如 noHandlerFound,无法被拦截,因此响应具有有效的 HTTP 状态代码,如 404,但正文包含Tomcat 默认 XML 错误。

有人知道如何设置或配置 Spring 异常解决程序以便拦截所有失败的请求并可以设置有效的 JSON 主体吗?

最佳答案

There is a section explaining spring 如何处理调度程序 servlet 的异常解析器:

The dispatcher's exception resolution strategy can be specified via a HandlerExceptionResolver, for example mapping certain exceptions to error pages. Default are AnnotationMethodHandlerExceptionResolver, ResponseStatusExceptionResolver, and DefaultHandlerExceptionResolver. These HandlerExceptionResolvers can be overridden through the application context. HandlerExceptionResolver can be given any bean name (they are tested by type).

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

关于java - 使用 ExceptionResolver 捕获 Spring MVC DispatcherServlet 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13197348/

61 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com