大战熟女丰满人妻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视频只有精品 | 毛片福利| 一级一毛片a级毛片欧美 | 国产精品九九久久精品女同 | 99精品视频在线观看免费 | 亚洲一级免费毛片 | 国产婷婷色 | 国产大片中文字幕 | 一本毛片| 精品影视 | 久久久国产精品四虎 | 国产日韩美国成人 | 色片在线 | 99热这里只有精品在在 | 国产日本欧美亚洲精品视 | 五月天精品 | 亚洲精品影视 | 亚洲欧美日韩一区超高清 | 亚洲综合极品香蕉久久网 | 国产 日韩 欧美 亚洲 | 天天综合日日噜噜噜 | 日韩精品福利视频一区二区三区 | 婷婷色站| 国产激情视频一区二区三区 | 黄片毛片一级 | 久草久草视频 | 久久亚洲私人国产精品 | 国产精品永久免费自在线观看 | 四虎影视在线看免费观看 | 亚洲十欧美十日韩十国产 | 欧美成人性毛片免费版 | 四虎影院黄色 |