首先我們不要在學習Spring的開始產生畏難情緒。Spring沒有臆想的那么高深,相反,它幫我們再項目開發(fā)中制定項目框架,簡化項目開發(fā)。它的主要功能是將項目開發(fā)中繁瑣的過程流程化,模式化,使用戶僅在固定文件中增加特定標簽并實現特定邏輯層的代碼就能完成項目開發(fā)。下面我們來分析web項目啟動時bean的初始化過程。
我們遵循類的依賴,引用關系來理清spring在這一過程中的架構和細節(jié)實現。java web項目入口在web.xml,Spring在此配置入口servlet完成bean的加載。DispatcherServlet 作為前置控制器是web服務器的入口。
<servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
我們知道load-on-startup元素標記容器是否在啟動的時候就加載這個servlet(實例化并調用其init()方法)。進入DispatcherServlet尋找init方法,在其父類HttpServletBean中找到。
DispatcherServlet的繼承關系如下圖
init方法細節(jié)代碼如下
網友評論