前言
处理器异常是调度异常,HandlerExceptionResolver提供了对处理器异常的处理,并解析为视图,下面分析Spring MVC默认配置的处理器异常解析逻辑。
版本:Spring Framework 4.3.x
默认配置
Dispatcher会加载上下文中的所有HandlerExceptionResolver
实例,WebMvcConfigurationSupport
依次定义了以下几个类型实例:
- ExceptionHandlerExceptionResolver 对控制器和控制器通知(@Controller&@ControllerAdvice)类上的异常处理器(@ExceptionHandler)方法提供支持。
- ResponseStatusExceptionResolver 将声明了
@ResponseStatus
注解的异常转换为HTTP错误状态,通过response.sendError
实现 - DefaultHandlerExceptionResolver 将标准的Spring MVC异常解析为HTTP错误状态码,通过
resposen.sendError()
实现
Spring Boot(1.5x)没有对其进行修改。因此默认情况下将使用上述实例。
后两个异常解析器都很容易通过查看源码理解,第一个异常解析器的实现源码很复杂,除非必要,不建议花时间去分析。