從零開始學(xué)習Spring怜庸。讓大家對spring的每一個jar包都熟悉。
今天搭建的工程無法跑起來砖织。只是剖析一部分。我們先從web.xml的配置入手末荐。
-
新搭建的工程侧纯,先配置listener,
-
pom.xml文件 只添加了兩個:spring-web, servlet-api
-
最終得到依賴的jar列表:
-
看下面的依賴關(guān)系
spring-aop甲脏。
????這個是面向切面編程的東西眶熬。雖然重要妹笆,但是在基礎(chǔ)開發(fā)中不是一定要用到的。先去掉娜氏。
servlet-api
????這個是在pom引入的拳缠,用來查看源碼,tomcat會提供jar贸弥,主要相關(guān)的是ServletContext窟坐,它是一個域?qū)ο螅俜浇衧ervlet上下文绵疲。spring相關(guān)的容器都會存放在這里哲鸳。(大家還記得不用spring的時候搭建的web工程嗎,doGet(...) DoPost(...) 方法盔憨,上面就有很多servletContext的取值存值操作)
spring-web徙菠。
???? 在web.xml中配置了一個監(jiān)聽器,他的作用是用來接收web application 關(guān)于 servlet context改變的通知(實現(xiàn)ServletContextListener接口)郁岩。而spring正是利用這個接收通知的特性婿奔,實現(xiàn)工程啟動的時候,就初始化spring容器问慎。
1.看下圖監(jiān)聽器有一個初始化方法脸秽,createContextLoader方法在3.2.9的實現(xiàn)中是返回null的,所以contextLoader這個對象就是他自身----this蝴乔。 主要看initWebApplicationContext方法记餐。
-
創(chuàng)建WebApplicationContext
在determineContextClass這個方法中,來確定web.xml是否有配置context-class薇正,沒有配置則使用默認的XmlWebApplicationContext片酝,這個默認的配置文件定義在spring-web中。
所以這里最主要的就是初始化xmlWebApplicationContext這個全局的對象挖腰。
他就是context currentContext雕沿,由他可以獲得servletContext,應(yīng)用名稱猴仑,id审轮,發(fā)布名稱,session辽俗。等等