Spring MVC中的MVC初始化

     在Spring MVC中,首先進行的是IoC容器的初始化,包括Root和DispatchServlet對應的content。在IoC容器準備好以後,就開始進行MVC的初始化,包括關於HandleMapping、ViewResolver等的初始化。

     在Spring MVC中,MVC的初始化在DispatchServlet的initStrategies方法中進行的。

      MVC框架需要的主要功能是根據http請求的信息選擇合適的controller,調用controller後,根據返回的結果選擇合適視圖進行渲染。所以在這裏主要關注一下這兩個方法:initHandlerMappings和initViewResolvers。initHandlerMappings方法初始化了尋找controller的規則,initViewResolvers初始化視圖解析的方法。

      那麼首先來看一下initHandlerMappings。在spring mvc中,關於尋找controller的規則是用HandleMapping表示的,首先看一下HandleMapping接口類圖:

HandlerMapping類圖

     在HandlerMapping接口中,定義了getHandler方法,根據http請求,取得對應的處理對象。這個處理請求的對象用HandlerExecutionChain類表示,在這個類中,包含兩個主要屬性,一個是真正處理請求的handler,另外一個是Interceptor的集合。

     介紹完HandlerMapping接口後,就來看一下Spring MVC中是如何初始化HandlerMapping信息的:

  

       在上述方法中,做的主要工作是是從容器中獲取所有HandlerMapping類型的bean,然後將這些bean按照一定的規則進行排序(order接口),最後爲handlerMap賦值,這樣關於HandlerMapping的信息就全紀錄在handlerMap中了。當有http請求時,會遍歷handlerMap集合,選擇合適的HandlerMapping實現,調用getHandler方法取得HandlerExecutionChain對象,然後執行真正的業務處理。

       在調用完controller後,Spring MVC會進行根據執行結果進行視圖解析,這個任務是由ViewResolver進行的,關於ViewResolver的工作原理,見這篇文章:http://blog.csdn.net/prince2270/archive/2010/09/17/5891085.aspx

       那下面就來看一下Spring MVC是如何初始化ViewResolver信息的:

        與HandlerMapping信息的初始化方法類似,取得IoC容器中所有的ViewResolver類型的bean,將其放入到viewResolvers中,並按照一定的規則進行排序。

        經過MVC的初始化,所有的信息已經準備就緒,時刻準備着處理http請求了。

 

 

 

 

 

 

 

 

 

 

 

 

 

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章