大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Spring框架教程
Spring IOC控制反轉(zhuǎn)
Spring AOP面向切面編程
Spring集成MyBatis
Spring事務(wù)
Spring與Web

Spring監(jiān)聽器的使用

舉例:springweb-2 項目(在 spring-web 項目基礎(chǔ)上修改)

對于 Web 應(yīng)用來說,ServletContext 對象是唯一的,一個 Web 應(yīng)用,只有一個ServletContext 對象,該對象是在 Web 應(yīng)用裝載時初始化的。若將 Spring 容器的創(chuàng)建時機(jī),放在 ServletContext 初始化時,就可以保證 Spring 容器的創(chuàng)建只會執(zhí)行一次,也就保證了Spring 容器在整個應(yīng)用中的唯一性。

當(dāng) Spring 容器創(chuàng)建好后,在整個應(yīng)用的生命周期過程中,Spring 容器應(yīng)該是隨時可以被訪問的。即,Spring 容器應(yīng)具有全局性。而放入 ServletContext 對象的屬性,就具有應(yīng)用的全局性。所以,將創(chuàng)建好的 Spring 容器,以屬性的形式放入到 ServletContext 的空間中,就保證了 Spring 容器的全局性。

上述的這些工作,已經(jīng)被封裝在了如下的 Spring 的 Jar 包的相關(guān) API 中: spring-web-4.3.9.RELEASE

Step1:導(dǎo)入 Jar 包

在Web項目中使用Spring,需要導(dǎo)入Spring對Web的支持包:spring-web-RELEASE。

該包在 Spring 框架的解壓目錄下的 libs 目錄中。

Step2:注冊監(jiān)聽器 ContextLoaderListener

若要在ServletContext初始化時創(chuàng)建Spring容器,就需要使用監(jiān)聽器接口ServletContextListener對ServletContext進(jìn)行監(jiān)聽。在web.xml中注冊該監(jiān)聽器。

Spring 為該監(jiān)聽器接口定義了一個實現(xiàn)類 ContextLoaderListener,完成了兩個很重要的工作:創(chuàng)建容器對象,并將容器對象放入到了 ServletContext 的空間中。

打開 ContextLoaderListener 的源碼。看到一共四個方法,兩個是構(gòu)造方法,一個初始化方法,一個銷毀方法。

所以,在這四個方法中較重要的方法應(yīng)該就是 contextInitialized(),context 初始化方法。

跟蹤 initWebApplicationContext()方法,可以看到,在其中創(chuàng)建了容器對象。

并且,將創(chuàng)建好的容器對象放入到了 ServletContext 的空間中,key 為一個常量:

WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE。

Step3:指定Spring配置文件的位置

ContextLoaderListener 在對 Spring 容器進(jìn)行創(chuàng)建時,需要加載 Spring 配置文件。其默認(rèn)的 Spring 配置文件位置與名稱為:WEB-INF/applicationContext.xml。但,一般會將該配置文件放置于項目的 classpath 下,即 src 下,所以需要在 web.xml 中對 Spring 配置文件的位置及名稱進(jìn)行指定。

從監(jiān)聽器 ContextLoaderListener 的父類 ContextLoader 的源碼中可以看到其要讀取的配置文件位置參數(shù)名稱

contextConfigLocation。

Step4:獲取Spring容器對象

在 Servlet 中獲取容器對象的常用方式有兩種:

● 直接從 ServletContext 中獲取

從對監(jiān)聽器 ContextLoaderListener 的源碼分析可知,容器對象在 ServletContext 的中存放的 key 為

WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE。所以,可以直接通過 ServletContext 的 getAttribute()方法,按照指定的 key 將容器對象獲取到。

● 通過 WebApplicationContextUtils 獲取

工具類 WebApplicationContextUtils 有一個方法專門用于從 ServletContext 中獲取 Spring容器對象:

getRequiredWebApplicationContext(ServletContext sc)

查其源碼,看其調(diào)用關(guān)系,就可看到其是從 ServletContext 中讀取的屬性值,即 Spring容器。

以上兩種方式,無論使用哪種獲取容器對象,刷新 success 頁面后,可看到代碼中使用 的 Spring 容器均為同一個對象。

全部教程
主站蜘蛛池模板: 精品日韩一区二区三区视频 | 中文字幕一区二区在线视频 | 国语自产偷拍精品视频偷最新 | 五月天婷婷在线观看高清 | 国产一区二区三区久久精品小说 | 黄黄视频在线观看 | 综合色天天 | 四虎福利 | 久久综合精品国产一区二区三区无 | 亚洲福利社 | 久久波多野结衣 | 日韩精品一区二区三区毛片 | 天天操夜夜操美女 | 国产精品99爱免费视频 | 欧美亚洲国产一区二区三区 | 日韩精品欧美亚洲高清有无 | 国产麻豆之光e奶女教师 | 97在线观看完整免费 | 午夜在线观看cao | 欧美性xxxx另类 | 国产精自产拍久久久久久 | 国产成人lu在线视频 | 国产成人久久精品区一区二区 | 九热视频在线观看 | 久久精品这里热有精品2015 | 日本一级毛片毛片一级毛片 | 久久综合久久自在自线精品自 | 成人看片黄a免费 | 免费区欧美一级毛片 | 毛片免费观看视频 | 久久国产三级精品 | 亚洲久久 | 国产成人亚洲综合无 | 日本一区二区日本免费 | 爆操极品美女 | 中文字幕在线高清 | 狠狠操亚洲 | 免费久久精品 | 中文字幕亚洲色图 | 狠狠色狠狠色 | 亚洲精品国产自在久久出水 |