Spring 加載過程

1、web項目

對於一個web項目,其部署在web容器中(JBoss,Tomcat),這個容器會提供一個全局的上下文環境(ServletContext),它可以爲Spring IOC提供宿主環境。

web項目啓動時首先會讀取web.xml配置文件,這一步驟沒有出錯並且完成之後,項目纔會正常啓動起來。

2、讀取web.xml文件

1.容器首先會讀取web.xml配置文件的兩個節點:<listener></listener>和<context-param></context-param>。

2.接着容器創建一個ServletContext,這個web項目都共享這個上下文。容器以<context-param></context-param>的name作爲鍵,value作爲值,存入ServletContext。

3.容器創建<listener></listener>中的類實例,根據配置的class類路徑<listener-class>來創建監聽,在監聽中會有初始化方法,啓動wen應用時系統調用Listener方法的contextInitialized(ServletContextEvent),關閉時調用contextDestroyed(ServletContextEvent)方法。

注:contextInitialized(ServletContextEvent)這個方法會初始化Spring容器。

4.以上都是在web項目還沒有完全啓動起來的時候就已經完成的工作。如果系統中有Servlet,則Servlet在第一次發起請求的時候被實例化,而且一般不會被容器銷燬,可以服務於多個用戶的請求。所以Servlet初始化要晚一些。

5.<context-param> -> <listener> -> <filter> -> <servlet>

3、Spring加載過程

1.web.xml加載過程中<listener>監聽時會觸發ContextLoaderListener類的contextInitialized方法

2.這個方法會集成ContextLoader類,會調用其initWebApplicationContext(ServletContext)方法,這個方法主要做三件事。

2.1 創建WebApplicationContext

2.2 加載spring配置文件的實例。從web.xml中讀取contextConfigLocation配置,放到ApplicationContext中。

2.3 創建好的ApplicationContext放入ServletContext中,

WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE作爲key。

4、Spring 啓動UML圖

 

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