黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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 容器均為同一個對象。

全部教程
主站蜘蛛池模板: 成视频年人黄网站免费视频 | 久久生活片 | 一区二区三区在线 | 网站 | 亚洲欧美日韩在线线精品 | 黄色片子免费看 | 国内精品伊人久久久影视 | 爆操极品美女 | 欧美日韩在线视频 | 一级做a爰片久久毛片看看 一级做a爰久久毛片武则天 | 久久加久久 | 激情影院a | 啪啪国产视频 | xxxx成人 | 一级黄色在线 | 亚洲日本视频在线 | 国产大片中文字幕在线观看 | 一区二区三区高清在线观看 | 青青综合网 | 中国妞xxxx| 亚洲三页 | 丝袜美腿在线 | 麻豆国产三级在线观看 | 国产欧美日韩一区二区三区在线 | 一级黄色片免费看 | 91精彩视频 | 国产成人毛片精品不卡在线 | 娇小被黑人爆出水黑人复古 | 久久看免费视频 | sss亚洲国产欧美一区二区 | xxxx日本在线播放免费不卡 | 免费色在线 | 日韩免费视频一区二区 | 成人在线观看午夜 | 欧美日韩精品在线观看 | 亚洲一区二区三区影院 | 亚洲欧美四级在线播放 | 亚洲国产天堂久久综合9999 | 日日日日干| 亚洲精品永久www嫩草 | 欧美线在线精品观看视频 | 国产综合视频 |