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