前言:源碼解析步驟以下圖執(zhí)行順序?yàn)榛A(chǔ)
請(qǐng)求流程.jpg
查找源碼對(duì)應(yīng)路徑
path
doDispatch
一嫉晶、HandlerMapping獲取method映射器
getHandler
HandlerExecutionChain
1天吓、請(qǐng)求:mappedHandler = getHandler(processedRequest, false);
2蘸际、返回:HandlerExecutionChain mappedHandler = null;
3祭陷、HandlerExecutionChain中參數(shù):
//HandlerMethod對(duì)象
private final Object handler;
//攔截器鏈苍凛,Spring中的攔截器必須實(shí)現(xiàn)這個(gè)接口
private HandlerInterceptor[] interceptors;
private List<HandlerInterceptor> interceptorList;
// 前置攔截器存在多個(gè)對(duì)象,標(biāo)識(shí)當(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