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