WebApplicationContext初始化
《WebApplicationContext初始化
Spring分别提供了用于启动WebApplicationContext的Servlet和Web容器监听器:
org.springframework.web.context.ContextLoaderServlet;
org.springframework.web.context.ContextLoaderListener.
这两个方法都是在web应用启动的时候来初始化WebApplicationContext,我个人认为Listerner要比Servlet更好一些,因为Listerner监听应用的启动和结束,而Servlet得启动要稍微延迟一些,如果在这时要做一些业务的操作,启动的前后顺序是有影响的。
配置例子如下:
<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,我们继续追踪initWebApplicationContext这个方法(具体代码我不贴出,大家可以看Spring中的源码),我们发现,原来ContextLoader是把WebApplicationContext(XmlWebApplicationContext是默认实现类)放在了ServletContext中,ServletContext也是一个“容器”,也是一个类似Map的结构,而WebApplicationContext在ServletContext中的KEY就是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,我们如果要使用WebApplicationContext则需要从ServletContext取出,Spring提供了一个WebApplicationContextUtils类,可以方便的取出WebApplicationContext,只要把ServletContext传入就可以了。
转载于:https://blog.51cto.com/longx/1321153
WebApplicationContext初始化相关推荐
- 【Spring MVC学习】WebApplicationContext初始化的三种方式
ApplicationContext是Spring的核心,Context我们通常解释为上下文环境,我想用"容器"来表述它更容易理解一些,ApplicationContext则是&q ...
- spring项目的 WebApplicationContext 初始化两次的解决方法
从图中可以看到Initializing Spring root WebApplicationContext两次初始化之间仅仅相隔了 5秒钟. 问题的原因是.settings/org.eclipse.w ...
- SpringMVC深度探险(三) —— DispatcherServlet与初始化主线
本文是专栏文章(SpringMVC深度探险)系列的文章之一,博客地址为:http://downpour.iteye.com/blog/1341459. 在上一篇文章中,我们给出了构成SpringMVC ...
- Spring WebApplicationContext
WebApplicationContext是专门为web应用准备的,他允许从相对于web根目录的路劲中装载配置文件完成初始化工作,从WebApplicationContext中可以获得ServletC ...
- Spring MVC源码——Root WebApplicationContext
Spring MVC源码--Root WebApplicationContext 打算开始读一些框架的源码,先拿 Spring MVC 练练手,欢迎点击这里访问我的源码注释, SpringMVC官方文 ...
- java dispatcher详解_dispatcherservlet初始化过程详解
之前给大家介绍了什么是dispatcherservlet,以及dispatcherservlet配置等方面的内容,那么下面要接着给大家介绍的就是dispatcherservlet初始化过程,一起来了解 ...
- DispatcherServlet与初始化主线
在上一篇文章中,我们给出了构成SpringMVC应用程序的三要素以及三要素的设计过程.让我们来归纳一下整个设计过程中的一些要点: SpringMVC将Http处理流程抽象为一个又一个处理单元 Spri ...
- (3)DispatcherServlet与初始化主线
在上一篇文章中,我们给出了构成SpringMVC应用程序的三要素以及三要素的设计过程.让我们来归纳一下整个设计过程中的一些要点: SpringMVC将Http处理流程抽象为一个又一个处理单元 Spri ...
- java单元测试启动类配置_Springboot 单元测试简单介绍和启动所有测试类的方法
最近一段时间都是在补之前的技术债,一直忙着写业务代码没有注重代码的质量,leader也在强求,所有要把单元测试搞起来了 我把单元测试分为两种 一个是service的单元测试,一个是controller ...
最新文章
- mybatis学习笔记二(接口注解)
- DNS服务在网络中的应用
- QML基础类型之geocircle
- 计算机科学825,2017年河南大学计算机与信息工程学院825专业基础课(软件工程导论、数据结构)之数据结构考研题库...
- php eval 语法错误,PHP eval和捕获错误(尽可能多)
- mac 解压_BetterZip for Mac(Mac解压压缩工具)
- WebSocket使用,包括服务端和客户端(JAVA实现)
- 关于linux下的iptables 的浅析命令和了解
- PHP TP5框架 发送短信验证码
- PPT文件压缩方法有哪些?
- 基于注解和EasyExcel指定单元格下拉选内容
- 为什么说阿里云和亚马逊云对比,阿里云的性价比比较低?
- 再读《投资中最简单的事》
- 面对疫情,健身俱乐部管理者最应该做的6件事
- 电脑W ndoWs在哪里,苹果电脑如何安装wndows系统.doc
- 【STM32CubeMX安装】
- Opencv Mat记录
- 交通安全评价方法简介
- 落尘曦的书籍分享-数据库相关书籍
- 2023年网络安全比赛--网页渗透测试中职组(超详细)
热门文章
- Space-Filling Designs
- gbdt如何处理多分类问题(multiclass,cart)
- r语言可以写c程序吗,[求助]R一般用什么写程序?
- 【存储知识学习】第五章-5.1-5.3 RAID磁盘阵列-《大话存储》 阅读笔记
- LeetCode:64. 最小路径和
- LeetCode:63. 不同路径 II
- gradle不能下载最新依赖包问题
- Nodejs中搭建一个静态Web服务器,通过读取文件获取响应类型
- Winform中实现ZedGraph不显示y=0这条刻度线
- Winforn中怎样在窗体中打开另一个窗体