handlermapping主要功能是為請求找到合適的handler和interceptors战转,并組合成HandlerExecutionChain以躯。查找handler的過程通過getHandlerInternal方法實現(xiàn),每個子類都其不同的實現(xiàn)刁标。
所有的HandlerMapping的實現(xiàn)都繼承于AbstarctHandlerMapping址晕,AbstarctHandlerMapping主要作用是完成攔截器的初始化工作。而通過AbstarctHandlerMapping又衍生出兩個系列吏砂,AbstractUrlHandlerMapping和AbstractHandlerMethodMapping乘客。
AbstractUrlHandlerMapping也有很多子類的實現(xiàn),如SimpleUrlHandlerMapping易核、AbstractDetectingUrlHandlerMapping匈织。總體來說,AbstractUrlHandlerMapping需要用到一個保存url和handler的對應(yīng)關(guān)系的map缀匕,map的初始化工作由子類實現(xiàn)纳决。不同的子類會有自己的策略,可以在配置文件中注冊乡小,也可以在spring容器中找阔加。
AbstractHandlerMethodMapping系列則通常用于注解的方法,解析包含@Controller或者@RequestMapping注解的類满钟,建立url和method的直接對應(yīng)關(guān)系胜榔,這也是目前使用最多的一種方式。