SpringMVC 處理器適配器詳解

SpringMVC 處理器適配器詳解

點擊右上角【關注】發哥微課堂頭條號,get更多相關技能~


0x00:介紹

處理器適配器 HandlerAdapter:作用是根據映射器找到的處理器 Handler 信息,按照特定的規則去執行相關的處理器 Handler。

其配置方式有兩種,一種是基於 xml 的資源配置,也就是非註解的配置方式。另外一種就是基於 Annotation 註解的配置。其註解在代碼中做上特殊標記,這些標記就可以編譯、類加載、運行時被讀取,然後去執行相應的處理。

0x01:非註解處理器適配器

1,第一個是 SimpleControllerHandlerAdapter,翻譯過來就是簡單的控制器處理器適配器,它支持所有實現了 Controller 接口的 Handler 控制器,如果開發中編寫了實現 Controller 接口的控制器,則 SimpleControllerHandlerAdapter 適配器就會去執行 Controller 的具體方法。其配置示例如下:

class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

2,第二個是 HttpRequestHandlerAdapter,翻譯過來就是 http 請求處理器適配器,它要求編寫的 Handler 需要實現 HttpRequestHandler 接口。使用這種 Handler 的開發方式,方便開發者獲取 request 的相關 http 請求信息,以及設置返回對象 response 的一些參數。其配置示例如下:

class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>

然後在之前的處理器映射器配置中添加這個 Handler 的 url 映射信息,其示例代碼如下:

testController1

testController2

處理器映射器就是根據 url 來查找 Handler,處理器適配器就是按照它要求的規則去執行 Handler,但是一個 Handler 類中只能編寫一個方法,這個弊端就可以通過註解的方式來解決。

0x02:註解處理器適配器

註解處理器適配器,只需要在指定的地方聲明一些註解信息即可。在 spring3.1 之後,springmvc 新的基於註解的適配器默認是 RequestMappingHandlerAdapter,它位於 springmvc 核心 jar 包 org.springframework.web.servlet.mvc.method.annotation

包下。

其第一種方式是在 springmvc.xml 中聲明 bean 和實現方式即可,示例代碼如下:

class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

第二種方式是使用 標籤來配置,它是一種簡寫模式,它會自動註冊處理器適配器,配置方式如下:

當我們使用了其註解方式後,就無需在 xml 配置中配置其它任何信息了,而只需要在作為 Handler 處理器的 Java 類中去添加相應的註解即可,示例代碼框架如下:

//使用Controller來標識它是一個控制器

@Controller

public class TestControllerTest{

@RequestMapping("/testurl")

public ModelAndView testurl() throws Exception{

//邏輯代碼

}

}

在以上代碼中 @Controller 是註解信息,表示該類是一個控制器類,可以被註解的處理器適配器找到,而 TestControllerTest 類中的 testurl 方法上有一個 @RequestMapping 註解信息,作用是指定一個 url 與該方法綁定。

這時為了讓註解的處理器映射器能找到 Handler 控制器,需要在 springmvc.xml 做下配置,方式有兩種:

1,在 springmcv.xml 中聲明 bean 信息,示例代碼如下:

class="com.fageweiketang.controller.TestController">

第二種是掃描配置,對某一個包下的所有類進行掃描,找出所有使用 @Controller 註解的 Handler 控制器類,示例代碼如下:

可以發現,上面這段和之前的處理器映射器一樣,其配置通用。

0x03:總結

SpringMVC 中處理器映射器 HandlerMapping 根據配置找到相應的 Handler,返回給前端控制器 DispatcherServlet,前端控制器再傳給處理器適配器讓它進行處理,處理器適配器會去找到對應的 Handler 去處理,處理後則就會返回一個 ModleAndView 對象。

其配置方式有兩種,一個是非註解方式配置,也就是基於 xml 配置文件。第二個就是註解配置,在類中做相應的註解即可。


分享到:


相關文章: