前言:源码解析步骤以下图执行顺序为基础
![](https://img.haomeiwen.com/i8012627/497e12010ddd76b2.jpg)
查找源码对应路径
![](https://img.haomeiwen.com/i8012627/c4faf311e63f3420.png)
![](https://img.haomeiwen.com/i8012627/5bf08996b65040e7.png)
一、HandlerMapping获取method映射器
![](https://img.haomeiwen.com/i8012627/11ba19382147a175.png)
![](https://img.haomeiwen.com/i8012627/5072d38cf7902e1e.png)
1、请求:mappedHandler = getHandler(processedRequest, false);
2、返回:HandlerExecutionChain mappedHandler = null;
3、HandlerExecutionChain中参数:
//HandlerMethod对象
private final Object handler;
//拦截器链,Spring中的拦截器必须实现这个接口
private HandlerInterceptor[] interceptors;
private List<HandlerInterceptor> interceptorList;
// 前置拦截器存在多个对象,标识当前调到了哪一个前置拦截器
private int interceptorIndex = -1;
二、Handler适配器控制器的获取
![](https://img.haomeiwen.com/i8012627/2a0d30b88f86957d.png)
![](https://img.haomeiwen.com/i8012627/f50662547b50c668.png)
三、前置拦截器
![](https://img.haomeiwen.com/i8012627/c9b58d2a7632dc9b.png)
![](https://img.haomeiwen.com/i8012627/aa41a6b93733f8ee.png)
四、HandlerAdapter.handle
具体调用到控制器某一个方法,实现业务逻辑的处理
五、中置拦截器
![](https://img.haomeiwen.com/i8012627/6ec88bd8e8a117de.png)
![](https://img.haomeiwen.com/i8012627/aee4873bdf8c1a84.png)
六、视图处理
![](https://img.haomeiwen.com/i8012627/2d587223470608fe.png)
processDispatchResult中render方法
![](https://img.haomeiwen.com/i8012627/0143d6c7e52066f8.png)
![](https://img.haomeiwen.com/i8012627/eb086da91d044345.png)
网友评论