日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebApplicationContext初始化

發(fā)布時間:2025/3/19 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebApplicationContext初始化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

《WebApplicationContext初始化

ApplicationContext是Spring的核心,Context我們通常解釋為上下文環(huán)境,我想用“容器”來表述它更容易理解一些,ApplicationContext則是“應(yīng)用的容器”了;在Web應(yīng)用中,我們會用到WebApplicationContext,WebApplicationContext繼承自ApplicationContext;WebApplicationContext的初始化方式和BeanFactory.ApplicationContext有所區(qū)別,因?yàn)閃ebApplicationContext需要ServletContext實(shí)例,也就是說它必須擁有Web容器的前提下才能完成啟動的工作.有過Web開發(fā)經(jīng)驗(yàn)的讀者都知道可以在web.xml中配置自啟動的Servlet或定義Web容器監(jiān)聽器(ServletContextListener),借助著兩者中的任何一個,我們就可以啟動Spring Web應(yīng)用上下文的工作.

Spring分別提供了用于啟動WebApplicationContext的Servlet和Web容器監(jiān)聽器:

org.springframework.web.context.ContextLoaderServlet;

org.springframework.web.context.ContextLoaderListener.

這兩個方法都是在web應(yīng)用啟動的時候來初始化WebApplicationContext,我個人認(rèn)為Listerner要比Servlet更好一些,因?yàn)長isterner監(jiān)聽?wèi)?yīng)用的啟動和結(jié)束,而Servlet得啟動要稍微延遲一些,如果在這時要做一些業(yè)務(wù)的操作,啟動的前后順序是有影響的。

配置例子如下:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

<listener>
<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>
</listener>

那么在ContextLoaderListener和ContextLoaderServlet中到底做了什么呢?
以ContextLoaderListener為例,我們可以看到
public void contextInitialized(ServletContextEvent event) {
this.contextLoader = createContextLoader();
this.contextLoader.initWebApplicationContext(event.getServletContext());
}
protected ContextLoader createContextLoader() {
return new ContextLoader();
}
ContextLoader是一個工具類,用來初始化WebApplicationContext,其主要方法就是initWebApplicationContext,我們繼續(xù)追蹤initWebApplicationContext這個方法(具體代碼我不貼出,大家可以看Spring中的源碼),我們發(fā)現(xiàn),原來ContextLoader是把WebApplicationContext(XmlWebApplicationContext是默認(rèn)實(shí)現(xiàn)類)放在了ServletContext中,ServletContext也是一個“容器”,也是一個類似Map的結(jié)構(gòu),而WebApplicationContext在ServletContext中的KEY就是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,我們?nèi)绻褂肳ebApplicationContext則需要從ServletContext取出,Spring提供了一個WebApplicationContextUtils類,可以方便的取出WebApplicationContext,只要把ServletContext傳入就可以了。


轉(zhuǎn)載于:https://blog.51cto.com/longx/1321153

總結(jié)

以上是生活随笔為你收集整理的WebApplicationContext初始化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。