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

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

全部教程
主站蜘蛛池模板: 日韩一区二区三区四区五区 | 日韩欧美一区黑人vs日本人 | 无遮羞肉体动漫影院免费版 | 羞视频在线观看 | 免费的黄网站 | 黄色最新网站 | 日本vs欧美一区二区三区 | 日日噜噜夜夜狠狠久久aⅴ 日日噜噜夜夜狠狠久久丁香七 | 亚洲狠狠干 | 最近2019中文免费字幕 | 黄色网址免费在线观看 | 深夜成人福利视频 | 国产成人精品综合久久久软件 | 欧美怡红院免费的视频 | 一级毛片免费在线观看网站 | 成人午夜免费剧场 | 一级高清毛片 | 欧美成人私人视频88在线观看 | 久久国产精品佐山爱 | 在线看片一区 | 日韩精品一区二区三区中文精品 | 岛国午夜精品视频在线观看 | 欧美日韩高清不卡一区二区三区 | 一级做a爱过程免费观看 | 午夜理伦 | 欧美视频手机在线 | 日韩中文字幕免费观看 | 极品国产高颜值露脸在线 | 日批视频在线播放 | 99九九精品免费视频观看 | 色综合97天天综合网 | 欧美日韩一区视频 | 亚洲日韩精品欧美一区二区一 | vr欧美乱强伦xxxxx | 狠狠综合久久综合88亚洲日本 | 丝袜综合网| 草逼视频免费观看 | 极品美女丝袜被的网站 | 天堂在线中文网 | 亚洲欧美精品一区天堂久久 | www.欧美在线观看 |