前言:源碼解析步驟以下圖執(zhí)行順序?yàn)榛A(chǔ)

請求流程.jpg
查找源碼對應(yīng)路徑

path

doDispatch
一、HandlerMapping獲取method映射器

getHandler

HandlerExecutionChain
1、請求:mappedHandler = getHandler(processedRequest, false);
2、返回:HandlerExecutionChain mappedHandler = null;
3、HandlerExecutionChain中參數(shù):
//HandlerMethod對象
private final Object handler;
//攔截器鏈,Spring中的攔截器必須實(shí)現(xiàn)這個(gè)接口
private HandlerInterceptor[] interceptors;
private List<HandlerInterceptor> interceptorList;
// 前置攔截器存在多個(gè)對象,標(biāo)識當(dāng)前調(diào)到了哪一個(gè)前置攔截器
private int interceptorIndex = -1;
二、Handler適配器控制器的獲取

getHandlerAdapter

getHandlerAdapter
三、前置攔截器

applyPreHandle

applyPostHandle
四、HandlerAdapter.handle
具體調(diào)用到控制器某一個(gè)方法,實(shí)現(xiàn)業(yè)務(wù)邏輯的處理
五、中置攔截器

applyPostHandle

applyPostHandle
六、視圖處理

processDispatchResult
processDispatchResult中render方法

render

triggerAfterCompletion