Spring Rest 和 MVC 异常处理

Spring Rest & MVC exception handling

我正在使用 SimpleMappingExceptionResolver 来处理所有 spring mvc 异常并且到目前为止工作完美,现在随着 REST 服务的引入,我们开始使用 controllerAdvice 即 ResponseEntityExceptionHandler 来处理其余例外。

在同一个 Web 应用程序中,我们有 spring MVC 和 Rest 服务,在引入控制器建议后,即 ResponseEntityExceptionHandlerSimpleMappingExceptionResolver 处理程序不再被调用,只有控制器建议被调用如有例外

有什么方法可以限制 controllerAdvice 即 ResponseEntityExceptionHandler 某些 url 路径即以 /rest/* 或 .rest url 模式和所有mvc 请求(url 模式).htm 必须在异常

时调用SimpleMappingExceptionResolver

这个问题还有其他解决方案吗?

通过将控制器建议仅定位到 restControllers 找到解决方案,如下所示

@ControllerAdvice(annotations = {RestController.class})
public class GroupsRestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
    ...
}