springmvc的handlermapping的關(guān)鍵點(diǎn)

handlermapping主要功能是為請(qǐng)求找到合適的handler和interceptors,并組合成HandlerExecutionChain。查找handler的過程通過getHandlerInternal方法實(shí)現(xiàn),每個(gè)子類都其不同的實(shí)現(xiàn)。

所有的HandlerMapping的實(shí)現(xiàn)都繼承于AbstarctHandlerMapping,AbstarctHandlerMapping主要作用是完成攔截器的初始化工作。而通過AbstarctHandlerMapping又衍生出兩個(gè)系列,AbstractUrlHandlerMapping和AbstractHandlerMethodMapping。

AbstractUrlHandlerMapping也有很多子類的實(shí)現(xiàn),如SimpleUrlHandlerMapping、AbstractDetectingUrlHandlerMapping。總體來說,AbstractUrlHandlerMapping需要用到一個(gè)保存url和handler的對(duì)應(yīng)關(guān)系的map,map的初始化工作由子類實(shí)現(xiàn)。不同的子類會(huì)有自己的策略,可以在配置文件中注冊(cè),也可以在spring容器中找。

AbstractHandlerMethodMapping系列則通常用于注解的方法,解析包含@Controller或者@RequestMapping注解的類,建立url和method的直接對(duì)應(yīng)關(guān)系,這也是目前使用最多的一種方式。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容