摘要:它的作用是根據(jù)找到相應(yīng)的處理器和接口里面只有一個方法只要使用就會返回一個,當(dāng)然我們可以定義自己的實現(xiàn)類來實現(xiàn)。
HandlerMapping:它的作用是根據(jù)request找到相應(yīng)的處理器handler和interceptors,HandlerMapping接口里面只有一個方法HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception;只要使用request就會返回一個HandlerExecutionChain,當(dāng)然我們可以定義自己的實現(xiàn)類來實現(xiàn)。
HandlerMapping的類的繼承結(jié)構(gòu)
可以看到HandlerMapping家族的成員有兩只,一支繼承AbstractUrlHandlerMapping,另一個繼承與AbstractHandlerMethodMapping,AbstractHandlerMapping是HandlerMapping的抽象類實現(xiàn),所有HandlerMapping的實現(xiàn)都繼承于AbstractHandlerMapping,AbstractHandlerMapping采用模版的設(shè)計模式設(shè)計了HandlerMapping實現(xiàn)的整體結(jié)構(gòu),子類需要通過模版方法提供一些初始值和具體的算法,AbstractHandlerMapping保存了所有的配置的interceptors,在獲取到handler后會根據(jù)從request提取的lookupPath將相應(yīng)的interceptors裝配上去。
public abstract class AbstractHandlerMapping extends WebApplicationObjectSupport implements HandlerMapping, Ordered 從中可知,AbstractHandlerMapping繼承于WebApplicationObjectSupport,初始化的時候會自動的調(diào)用initApplicationContext模板方法,
/* java
@Override
protected void initApplicationContext() throws BeansException { extendInterceptors(this.interceptors); (1) detectMappedInterceptors(this.adaptedInterceptors); (2) initInterceptors(); (3) }
*/
其中,extendInterceptors是模版方法,用于給子類提供一個添加interceptors的入口,detectMappedInterceptors方法用于將Spring MVC 的容器及父類容器中的所有MappedInterceptors的bean添加到mappedInterceptors中,initInterceptors方法的作用是初始化interceptor,具體內(nèi)容其實是將interceptors屬性里所包含的對象按類型添加到MappedInterceptors或adaptedInterceptors
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/72600.html
摘要:處理器是繼前端控制器的后端控制器,在的控制下對具體的用戶請求進行處理。由于涉及到具體的用戶業(yè)務(wù)請求,所以一般情況需要程序員根據(jù)業(yè)務(wù)需求開發(fā)。 1、mcv整體架構(gòu)和流程 showImg(https://segmentfault.com/img/bV55Qq?w=860&h=406); 用戶發(fā)送請求至前端控制器 DispatcherServlet DispatcherServlet 收到...
摘要:接口接口作用是將請求映射到處理程序,以及預(yù)處理和處理后的攔截器列表,映射是基于一些標(biāo)準(zhǔn)的,其中的細(xì)節(jié)因不同的實現(xiàn)而不相同。該參數(shù)是類型,作用是檢查所有的映射解析器或使用或為的,默認(rèn)為,即從上下文中檢查所有的。 概述 在Spring MVC啟動章節(jié)https://segmentfault.com/a/1190000014674239,介紹到了DispatcherServlet的onRef...
摘要:概述通過前三章的分析,我們簡要分析了和,但對攔截器部分做詳細(xì)的分析,攔截器的加載和初始化是三個相同的部分。 概述 通過前三章的分析,我們簡要分析了SimpleUrlHandlerMapping、BeanNameUrlHandlerMapping和RequestMappingHandlerMapping,但對攔截器部分做詳細(xì)的分析,攔截器的加載和初始化是三個HandlerMapping相...
摘要:概述上一節(jié)我們分析了的初始化過程,即創(chuàng)建并注冊,本章我們分析下的請求處理過程,即查找。本系列文章是基于。最后創(chuàng)建了群方便大家交流,可掃描加入,同時也可加我,共同學(xué)習(xí)共同進步,謝謝 概述 上一節(jié)我們分析了RequestMappingHandlerMapping的初始化過程,即創(chuàng)建并注冊HandlerMehtod,本章我們分析下RequestMappingHandlerMapping的請求...
摘要:與類圖對比,類繼承自抽象類,其又繼承自抽象類,再往上繼承關(guān)系與一致。創(chuàng)建初始化上一章我們分析了的創(chuàng)建初始化過程,的創(chuàng)建初始化過程與一樣,方法的入口在抽象類中的方法。至此,代碼編寫完畢。 概述 本節(jié)我們繼續(xù)分析HandlerMapping另一個實現(xiàn)類BeanNameUrlHandlerMapping,從類的名字可知,該類會根據(jù)請求的url與spring容器中定義的bean的name屬性值...
閱讀 1981·2021-11-23 10:03
閱讀 4179·2021-11-22 09:34
閱讀 2487·2021-10-08 10:05
閱讀 2254·2019-08-30 15:53
閱讀 1691·2019-08-30 13:56
閱讀 1161·2019-08-29 16:52
閱讀 1113·2019-08-26 13:31
閱讀 3352·2019-08-26 11:45