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

Spring框架教程
Spring IOC控制反轉
Spring AOP面向切面編程
Spring集成MyBatis
Spring事務
Spring與Web

Spring監聽器的使用

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

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

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

上述的這些工作,已經被封裝在了如下的 Spring 的 Jar 包的相關 API 中: spring-web-4.3.9.RELEASE

Step1:導入 Jar 包

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

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

Step2:注冊監聽器 ContextLoaderListener

若要在ServletContext初始化時創建Spring容器,就需要使用監聽器接口ServletContextListener對ServletContext進行監聽。在web.xml中注冊該監聽器。

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

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

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

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

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

WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE。

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

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

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

contextConfigLocation。

Step4:獲取Spring容器對象

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

● 直接從 ServletContext 中獲取

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

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

● 通過 WebApplicationContextUtils 獲取

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

getRequiredWebApplicationContext(ServletContext sc)

查其源碼,看其調用關系,就可看到其是從 ServletContext 中讀取的屬性值,即 Spring容器。

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

全部教程
主站蜘蛛池模板: 免费国产小视频在线观看 | 国内精品福利 | 麻豆精品久久精品色综合 | 国产永久在线 | 精品久久伦理中文字幕 | 国产一二三区精品 | 国产91成人精品亚洲精品 | 国产精品国偷自产在线 | 国产精品一区二区在线播放 | 天天插天天操天天干 | 欧美激情在线视频播放 | 国产欧美高清 | 羞羞色男人的天堂伊人久久 | 色偷偷要色偷偷网站视频在线 | 国产欧美久久久另类精品 | 亚洲欧美日韩高清一区二区三区 | 免费欧美一级片 | 国产精品二区在线 | 在线观看免费情网站大全 | 国产片久久 | 久久毛片免费看一区二区三区 | 四虎成人精品在永久免费 | 综合视频在线 | 日韩一区二区三区四区 | 亚洲精品成人456在线播放 | 桃色婷婷 | 四虎影永久在线观看网址 | 亚洲午夜精品 | 色接久久 | 久久精品加勒比中文字幕 | 国产成人综合在线 | 亚洲久久视频 | 玖玖玖精品视频免费播放 | 日韩成人 | 视频一区中文字幕 | 国产青草亚洲香蕉精品久久 | 国内精品一级毛片免费看 | zzz色| 免费看特级毛片 | 中文乱码字幕午夜无线观看 | 狠狠色噜噜狠狠狠狠米奇777 |