@ExceptionHandler
在DispatcherServlet的初始化策略过程中,会进行处理异常解析器的初始化,得到实现HandlerExceptionResolver接口的所有实例bean的集合。
其中的ExceptionHandlerExceptionResolver(Spring自3.2版本后AnnotationMethodHandlerExceptionResolver被弃用)即是针对@ExceptionHandler异常处理注解的业务处理类。
当针对请求的后台业务处理逻辑抛出异常后,DispatcherServlet会最终统一处理请求结果,针对异常做特殊处理。
接下来processHandlerException方法开始处理异常,首先是获取实例化时已经注册的异常处理解析bean,针对@ExceptionHandler注解的异常处理解析器就是ExceptionHandlerExceptionResolver
在ExceptionHandlerExceptionResolver初始化的过程中,会进行@ControllerAdvice注解bean的解析
获取容器中被@ControllerAdvice注解的实例化bean,同时会抽取所有注解bean的Method保存到ExceptionHandlerMethodResolver中