请求进来会先来到 DispatchServlet
的 doDispatch()
进行处理
找到一个 HandlerAdapter
适配器。利用适配器执行目标方法
RequestMappingHandlerAdapter
来执行,调用 invokeHandlerMethod()
来执行目标方法
目标方法执行之前,会准备好两个东西
- HandlerMethodArgumentResolver:参数解析器,确定目标方法每个参数值
- HandlerMethodReturnValueHandler:返回值处理器,确定目标方法的返回值该怎么处理
RequestMappingHandlerAdapter
里的 invokeAndHandle()
真正执行目标方法
目标方法执行完成,会返回 返回值对象
找到一个合适的返回值处理器 HandlerMethodReturnValueHandler
最终找到 RequestResponseBodyMethodProcessor
能处理 标注了 @Response
注解的方法
RequestResponseBodyMethodProcessor
调用 writeWithMessageConverters,利用 MessageConverter
把返回值写出去