【发布时间】:2017-12-17 23:07:24
【问题描述】:
NoSuchRequestHandlingMethodException 在 Spring 4.3 中被弃用,取而代之的是 annotation-driven handler methods。这是什么意思?该异常仍列在documentation 中,但未提及其已弃用状态。如果我理解正确,当给定请求没有请求映射器时会引发此异常。它似乎由DefaultExceptionHandlerResolver、here 处理,并且相关方法也已被弃用。
如果不推荐使用此方法,我可以假设 Spring 不再抛出此异常吗?我应该如何用注释驱动的异常处理替换这个功能?如果不推荐使用该异常,我应该处理哪个异常?
旁注:我还注意到一个较新的NoHandlerFoundException、here。这是替代品吗?如果是这样,为什么?它似乎做同样的事情。为什么不弃用与其他 HTTP 状态代码相关的异常?这一切都没有多大意义。
【问题讨论】:
-
NoSuchRequestHandlingMethodException源于一个事实,即曾经有一个MultiActionController,因为它已被弃用,也适用于随附的类(如例外)。您的理解也是错误的,它是从MultiActionController中抛出的,如果找不到方法,它会抛出它。它不是像NoHandlerFoundException这样的通用异常处理的一部分。 -
@M.Deinum 感谢您的澄清!那么这个异常永远不会被Spring本身抛出?如果我想处理通用 404,我应该处理
NoHandlerFoundException? -
它将被 Spring 的特定弃用组件抛出,因此其余部分弃用。
-
@M.Deinum 啊,我明白了,谢谢。因此,如果我没有
MultiActionController实例(或任何其他多操作类),我可以放心地忽略此异常。并使用NoHandlerFoundException处理未映射的请求。 -
没错。并且整个
MultiActionController(以及随之而来的对象/方法)的东西已被弃用。
标签: spring spring-mvc