spring項目的啓動過程

下邊利用tomcat啓動spring項目來看看啓動過程中發生了什麼:

項目啓動過程比較長,本想着粘到編輯器中做解析,無奈字數超限,於是轉爲圖片,結果超出長度,不得已做了二次截圖才上傳成功,項目啓動的主要行爲大概都截到了,可以參考一下。

總結一下tomcat啓動加載順序:

1.啓動tomcat容器catalina,catalina 就是Tomcat服務器使用的 Apache實現的servlet容器的名字

2.容器監聽日誌打印出當前運行系統環境的tomcat版本號,系統名稱以及其他的硬件版本號,以及JDK所在的位置,以及JVM虛擬機的版本號。

3.初始化高併發的APR模式後,隨即就會指定tomcat運行的端口號,同時指定ajp-apr的端口號(AJP13是定向包協議。因爲性能原因,使用二進制格式來傳輸可讀性文本。),這也是tomcat快要啓動起來後看到的端口號。

4.初始化完相應參數後,Catalina服務纔算開始正式啓動;

5.開始運行tomcat內部核心的標準引擎

6.開始運行Servlet引擎;

7.在容器中初始化log4j;以上可以認爲是tomcat在正式工作前開始做的預備工作,發現沒有錯誤後,就可以正式初始化spring容器了,爲項目運行做最終準備。

8.開始初始化Spring root

9.優先搜索最基礎的配置文件並添加到StandardServletEnvironment中去,如servletConfigInitParams,servletContextInitParams,jndiProperties,systemProperties,systemEnvironment

10.完成添加會打印Initialized StandardServletEnvironment with PropertySources [servletConfigInitParams,servletContextInitParams,jndiProperties,systemProperties,systemEnvironment]

11.由於項目中配置的有servlet,所以tomcat檢測到後替換了默認的servlet配置,並刷新了根目錄的層級關係。

12.加載系統配置,應該是JDK;初始化完成後會打印出Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]

13.根據web.xml定義的規則查詢並加載spring配置,接着加載配置文件中xsd文件並使用編程接口解釋器JAXP解析;

14.開始加載Bean

15.加載標籤,如 aop - AopNamespaceHandler

c - SimpleConstructorNamespaceHandler

cache - CacheNamespaceHandler

context - ContextNamespaceHandler

jdbc - JdbcNamespaceHandler

jee - JeeNamespaceHandler

jms - JmsNamespaceHandler

lang - LangNamespaceHandler

mvc - MvcNamespaceHandler

oxm - OxmNamespaceHandler

p - SimplePropertyNamespaceHandler

task - TaskNamespaceHandler

tx - TxNamespaceHandler

util - UtilNamespaceHandler

16.解析之前加載到內存applicationContext文件中定義的bean

17.掃描mapper文件,尋找與MySQL配置相匹配的properties文件。

18.spring開始實例化bean,加載Class文件

19.爲實現類的目標文件創建動態代理

20.初始化字符過濾器

21.啓動成功

關於項目中涉及到的大部分主要關鍵點,都作了記錄。至於英文啓動環境及句柄的含義,有心可以對照網上查閱,這裏不便展開來說。

 

總結一下springMVC請求流程:

DispatcherServlet是一個分發器,控制着整個springMVC的流程有序。

①:DispatcherServlet是springmvc中的前端控制器(front controller),負責接收request並將request轉發給對應的處理組件.

②:HanlerMapping是springmvc中完成url到controller映射的組件.DispatcherServlet接收request,然後從HandlerMapping查找處理request的controller.

③:Cntroller處理request,並返回ModelAndView對象,Controller是springmvc中負責處理request的組件(類似於struts2中的Action),ModelAndView是封裝結果視圖的組件.

④ ⑤ ⑥:視圖解析器解析ModelAndView對象並返回對應的視圖給客戶端.

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