欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析SpringMVC中的適配器HandlerAdapter

 更新時(shí)間:2021年01月13日 16:41:39   作者:阿南Nanth  
這篇文章主要介紹了SpringMVC中的適配器HandlerAdapter的相關(guān)資料,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

DispatcherServlte的initHandlerAdapters方法根據(jù)配置文件信息把HandlerAdapter注冊(cè)到handlerAdapters(List)中。

如果在配置文件中沒(méi)有配置,默認(rèn)配置會(huì)讀取DispatcherServlte.properties文件,該文件中配置了三種HandlerAdapter:HttpRequestHandlerAdapter,SimpleControllerHandlerAdapter和AnnotationMethodHandlerAdapter。

SimpleControllerHandlerAdapter :繼承Controller方式所使用的適配器
HttpRequestHandlerAdapter   :HTTP請(qǐng)求處理器適配器
RequestMappingHandlerAdapter  :注解方式(@Controller)的處理器適配器

getHandler方法根據(jù)請(qǐng)求遍歷注冊(cè)到handlerAdapters中的適配器拿到對(duì)應(yīng)的適配器處理。

for (HandlerMapping hm : this.handlerMappings) {
		HandlerExecutionChain handler = hm.getHandler(request);
		if (handler != null) {
		  return handler;
		}
}

HandlerAdapter接口有三個(gè)方法:

在這里插入圖片描述

supports方法:是判斷該適配器是否支持這個(gè)HandlerMethod,就是當(dāng)?shù)玫揭粋€(gè)handler時(shí),該接口子類(lèi)該方法做判斷(就是類(lèi)似handler instanceof Controller的判斷方式),用來(lái)得到適配這個(gè)handler的適配器子類(lèi)。
handle方法:用來(lái)執(zhí)行控制器處理函數(shù),獲取ModelAndView 。就是根據(jù)該適配器調(diào)用規(guī)則執(zhí)行handler方法。

如果正常編寫(xiě)調(diào)用,就需要使用多個(gè)if else判斷instance of

if(handler instanceof HttpRequestHandler){
 handle1();//HttpRequestHandler的處理方式
} else if (handler instanceof Controller){
 handle2();//Controller的處理方式
} else if (handler instanceof Servlet){
 handle3();//Servlet的處理方式
}

這種方法再添加新的處理器實(shí)現(xiàn)方式,就需要修改源碼,新增else添加處理邏輯,不符合對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉原則。使用了HandlerAdapter后,當(dāng)需要新增一種處理器(Controller)時(shí),只需要新增一個(gè)HandlerAdapter即可,判斷邏輯在他的supports方法中,處理邏輯在handle中,不需要修改任何其他代碼。

到此這篇關(guān)于淺析SpringMVC中的適配器HandlerAdapter的文章就介紹到這了,更多相關(guān)SpringMVC適配器HandlerAdapter內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)監(jiān)聽(tīng)文件變化的三種方案詳解

    Java實(shí)現(xiàn)監(jiān)聽(tīng)文件變化的三種方案詳解

    這篇文章主要介紹了Java實(shí)現(xiàn)監(jiān)聽(tīng)文件變化的三種方法,每種方案給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • JavaWeb實(shí)現(xiàn)郵件發(fā)送功能

    JavaWeb實(shí)現(xiàn)郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了JavaWeb實(shí)現(xiàn)郵件發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 基于logback實(shí)現(xiàn)純java版本的SDK組件

    基于logback實(shí)現(xiàn)純java版本的SDK組件

    這篇文章主要介紹了基于logback實(shí)現(xiàn)純java版本的SDK組件,在項(xiàng)目開(kāi)發(fā)過(guò)程中通常會(huì)使用logback作為日志記錄的依賴(lài)工具,使用方式是引入logback相關(guān)jar包,然后配置logback.xml配置文件的方式來(lái)實(shí)現(xiàn),需要的朋友可以參考下
    2023-11-11
  • java泛型類(lèi)的定義與使用詳解

    java泛型類(lèi)的定義與使用詳解

    這篇文章主要為大家詳細(xì)介紹了java泛型類(lèi)定義與使用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 最新評(píng)論