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