Spring MVC 學習筆記 handlerMapping和handlerAdapter

來源:互聯網
上載者:User

標籤:修改   ring   too   pat   work   入參   bsp   ada   使用者   

HandlerMapping 
Spring mvc 使用HandlerMapping來找到並儲存url請求和處理函數間的mapping關係。 
  
以DefaultAnnotationHandlerMapping為例來具體看HandlerMapping的作用 
  DefaultAnnotationHandlerMapping將掃描當前所有已經註冊的spring beans中的@requestmapping標註以找出url 和 handler method處理函數的關係並予以關聯。 

Handleradapter 
Spring MVC通過HandlerAdapter來實際調用處理函數。 
以AnnotationMethodHandlerAdapter為例 
DispatcherServlet中根據handlermapping找到對應的handler method後,首先檢查當前工程中註冊的所有可用的handlerAdapter,根據handlerAdapter中的supports方法找到可以使用的handlerAdapter。通過調用handlerAdapter中的handle方法來處理及準備handler method中的參數及annotation(這就是spring mvc如何將reqeust中的參數變成handle method中的輸入參數的地方),最終調用實際的handle method。 

detectAllHandlerMappings 
預設情況下spring mvc 將載入 當前系統中所有實現了HandlerMapping介面的bean。如果只期望spring mvc載入指定的handlermapping時,可以修改web.xml中的DispatcherServlet的初始參數,將detectAllHandlerMappings的值設定為false 

Xml代碼  
  1. <init-param>  
  2.     <param-name>detectAllHandlerMappings</param-name>  
  3.     <param-value>false</param-value>  
  4. </init-param>  


此時spring mvc將尋找名 為“handlerMapping”的bean並作為當前系統中唯一的handlermapping。 
如果沒有定義handlerMapping的話,則spring mvc將按照org.springframework.web.servlet.DispatcherServlet所在目錄下的DispatcherServlet.properties中所定義的org.springframework.web.servlet.HandlerMapping的內容來載入預設的handlerMapping(使用者沒有自訂Strategies的情況下)。 

detectAllHandlerAdapters 
作用和detectAllHandlerMappings類似,只不過作用對象為handlerAdapter。亦可通過 

Xml代碼  
  1. <init-param>  
  2.     <param-name>detectAllHandlerAdapters</param-name>  
  3.     <param-value>false</param-value>  
  4. </init-param>  


來強制系統只載入bean name 為” handlerAdapter”handlerAdapter。載入不到的情況下將按照DispatcherServlet.properties中所定義的org.springframework.web.servlet.HandlerAdapter的內容來載入預設的handlerAdapter。 

Spring MVC 學習筆記 handlerMapping和handlerAdapter

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.