版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、往鏈點(diǎn)點(diǎn)通共享資源,了解更多請(qǐng)登錄上面我們分析了IOC容器本身的實(shí)現(xiàn),下面我們看看在典型的web環(huán)境中,SpringIOC容器是怎樣被載入和起作用的。簡(jiǎn)單的說(shuō),在web容器中,通過(guò)ServletContext為Spring的IOC容器提供宿主環(huán)境,對(duì)應(yīng)的建立起一個(gè)IOC容器的體系。其中,首先需要建立的是根上下文,這個(gè)上下文持有的對(duì)象可以有業(yè)務(wù)對(duì)象,數(shù)據(jù)存取對(duì)象,資源,事物管理器等各種中間層對(duì)象。在這個(gè)上下文的基礎(chǔ)上,和webMVC相關(guān)還
2、會(huì)有一個(gè)上下文來(lái)保存控制器之類(lèi)的MVC對(duì)象,這樣就構(gòu)成了一個(gè)層次化的上下文結(jié)構(gòu)。在web容器中啟動(dòng)Spring應(yīng)用程序就是一個(gè)建立這個(gè)上下文體系的過(guò)程。Spring為web應(yīng)用提供了上下文的擴(kuò)展接口WebApplicationContext:Java代碼1.publicinterfaceWebApplicationContextextendsApplicationContext2.這里定義的常量用于在ServletContext中存取根
3、上下文3.StringROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE=WebApplicationContext.class.getName()“.ROOT“4.......5.對(duì)WebApplicationContext來(lái)說(shuō),需要得到Web容器的ServletContext6.ServletContextgetServletContext()7.而一般的啟動(dòng)過(guò)程,Spring會(huì)使用一個(gè)默認(rèn)的實(shí)現(xiàn),XmlW
4、ebApplicationContext這個(gè)上下文實(shí)現(xiàn)作為在web容器中的根上下文容器被建立起來(lái),具體的建立過(guò)程在下面我們會(huì)詳細(xì)分析。Java代碼1.publicclassXmlWebApplicationContextextendsAbstractRefreshableWebApplicationContext2.33.if(getNamespace()!=null)34.returnnewString[]DEFAULT_CONFIG
5、_LOCATION_PREFIXgetNamespace()DEFAULT_CONFIG_LOCATION_SUFFIX35.36.else37.returnnewString[]DEFAULT_CONFIG_LOCATION38.39.40.對(duì)于一個(gè)Spring激活的web應(yīng)用程序,可以通過(guò)使用Spring代碼聲明式的指定在web應(yīng)用程序啟動(dòng)時(shí)載入應(yīng)用程序上下文(WebApplicationContext)Spring的Context
6、Loader是提供這樣性能的類(lèi),我們可以使用ContextLoaderServlet或者ContextLoaderListener的啟動(dòng)時(shí)載入的Servlet來(lái)實(shí)例化SpringIOC容器為什么會(huì)有兩個(gè)不同的類(lèi)來(lái)裝載它呢,這是因?yàn)樗鼈兊氖褂眯枰獏^(qū)別不同的Servlet容器支持的Serlvet版本。但不管是ContextLoaderSevlet還是ContextLoaderListener都使用ContextLoader來(lái)完成實(shí)際的Web
7、ApplicationContext的初始化工作。這個(gè)ContextLoder就像是SpringWeb應(yīng)用程序在Web容器中的加載器booter。當(dāng)然這些Servlet的具體使用我們都要借助web容器中的部署描述符來(lái)進(jìn)行相關(guān)的定義。下面我們使用ContextLoaderListener作為載入器作一個(gè)詳細(xì)的分析,這個(gè)Servlet的監(jiān)聽(tīng)器是根上下文被載入的地方,也是整個(gè)Springweb應(yīng)用加載上下文的第一個(gè)地方;從加載過(guò)程我們可以看到
8、,首先從Servlet事件中得到ServletContext,然后可以讀到配置好的在web.xml的中的各個(gè)屬性值,然后ContextLoder實(shí)例化WebApplicationContext并完成其載入和初始化作為根上下文。當(dāng)這個(gè)根上下文被載入后,它被綁定到web應(yīng)用程序的ServletContext上。任何需要訪問(wèn)該ApplicationContext的應(yīng)用程序代碼都可以從WebApplicationContextUtils類(lèi)的靜態(tài)
9、方法來(lái)得到:Java代碼1.WebApplicationContextgetWebApplicationContext(ServletContextsc)以Tomcat作為Servlet容器為例,下面是具體的步驟:1.Tomcat啟動(dòng)時(shí)需要從web.xml中讀取啟動(dòng)參數(shù),在web.xml中我們需要對(duì)ContextLoaderListener進(jìn)行配置,對(duì)于在web應(yīng)用啟動(dòng)入口是在ContextLoaderListener中的初始化部分;從
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- web用戶(hù)管理系統(tǒng)源代碼
- 第19章spring的ioc
- 基于Spring Boot的源代碼在線評(píng)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于web的學(xué)生綜合測(cè)評(píng)系統(tǒng)(內(nèi)含源代碼)
- 基于web的學(xué)生綜合測(cè)評(píng)系統(tǒng)(內(nèi)含源代碼)
- 基于web的學(xué)生綜合測(cè)評(píng)系統(tǒng)(內(nèi)含源代碼)
- 支持XML配置的IoC微容器設(shè)計(jì).pdf
- netty源代碼解析(2)——客戶(hù)端流程
- 源代碼.txt
- 源代碼.rar
- 源代碼.doc
- 源代碼.doc
- 源代碼.doc
- Spring架構(gòu)在Web服務(wù)中的應(yīng)用研究.pdf
- 源代碼.doc
- 源代碼.doc
- 源代碼.doc
- 源代碼.txt
- 源代碼.txt
- 源代碼.doc
評(píng)論
0/150
提交評(píng)論