文档章节

SpringMVC中的ContextLoaderListener设计困惑

华兹格
 华兹格
发布于 2015/12/25 00:07
字数 302
阅读 681
收藏 6

「深度学习福利」大神带你进阶工程师,立即查看>>>

最近在学习Spring MVC原理相关部分,就按顺序从ContextLoaderListener来看,但是我在阅读此类的设计中,遇到了些困惑的地方,现纪录如下,希望能遇到高手能帮我答疑解惑:

ContextLoaderListener 类的定义:

public class ContextLoaderListener extends ContextLoader implements ServletContextListener {
	private ContextLoader contextLoader;
	public ContextLoaderListener() {
	}

	public ContextLoaderListener(WebApplicationContext context) {
		super(context);
	}

	public void contextInitialized(ServletContextEvent event) {
		this.contextLoader = createContextLoader();
		if (this.contextLoader == null) {
			this.contextLoader = this;
		}
		this.contextLoader.initWebApplicationContext(event.getServletContext());
	}

	@Deprecated
	protected ContextLoader createContextLoader() {
		return null;
	}

	@Deprecated
	public ContextLoader getContextLoader() {
		return this.contextLoader;
	}

	public void contextDestroyed(ServletContextEvent event) {
		if (this.contextLoader != null) {
			this.contextLoader.closeWebApplicationContext(event.getServletContext());
		}
		ContextCleanupListener.cleanupAttributes(event.getServletContext());
	}

}



困惑一:

ContextLoaderListener类已经继承了ContextLoader,为何又声明了一个私有的ContextLoader类的 对象属性contextLoader?而这个 contextLoader 在上下文的 意义愚以为仅仅是显示的说明 contextLoader 其实就是"this"。(我仿照ContextLoaderListener写了个去掉contextLoader属性的类,容器正常启动

困惑二:

ContextLoaderListener doc注释为:

Bootstrap listener to start up and shut down Spring's root {@link WebApplicationContext}...

Spring's root {@link WebApplicationContext},可以翻译为Spring的 顶级/根 WebApplicationContext吗?那是否有非root的呢?

也许我比较愚钝没能发现其中的奥秘,也可能我比较较真,非要打破沙锅问到底,思考了许久,还希望大牛能帮我答疑解惑。

华兹格

华兹格

粉丝 165
博文 222
码字总数 85545
作品 0
海淀
高级程序员
私信 提问
加载中
此博客有 4 条评论,请先登录后再查看。
我的架构演化笔记 功能1: 基本的用户注册

“咚咚”,一阵急促的敲门声, 我从睡梦中惊醒,我靠,这才几点,谁这么早, 开门一看,原来我的小表弟放暑假了,来南京玩,顺便说跟我后面学习一个网站是怎么做出来的。 于是有了下面的一段...

强子哥哥
2014/05/31
976
3
浏览器中的scheme解释器--SchemeScript

一个用javascript实现的scheme解释器,可以运行在浏览器中或node.js中。 刚刚看到编译原理与实践第二章,一时兴起,想写个以前就想写的scheme的解释器。昨天晚上开始写,到刚才为止,接近一天...

zoowii
2012/11/01
1.2K
0
高效 Java Web 开发框架--JessMA

JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate、MyBatis 与 JDBC DAO 组件),集成了 Action 拦截...

伤神小怪兽
2012/11/13
9.2K
3
Go 的 Web 框架--Golanger

Golanger 是一个轻量级的 Web 应用框架,使用 Go 语言编写。 Golanger框架主要实现了MVC模式(三层架构模式)(Model-View-Controller), 它是软件工程中的一种软件架构模式,把软件系统分为三个...

余风11
2012/11/23
9.1K
1
点阵字符设计工具--MATPaint

MATPaint 是 MATrix Paint 的缩写,用于设计点阵字符,最高支持 32x32 像素。 该工具的功能: 新建、打开和保持文件 记住上次状态 保持模式为 PNG 图像 为微控制器生成十六进制码 打印预览和...

匿名
2012/11/26
752
0

没有更多内容

加载失败,请刷新页面

加载更多

创建myBatis项目

1、简介 1.1、核心组件 SqlSessionFactoryBuilder(构造器):根据配置信息或者代码生成SqlSessionFactory SqlSessionFactory(工厂接口):依靠工厂来生成SqlSession(会话) SqlSession(会话): ...

执键走天涯
13分钟前
0
0
Tomcat集群带来的问题和解决思路

Tomcat集群 存在问题 解决方案 基于Redis+Cookie+Jackson+Filter的原生解决集群Session共享问题 使用Spring Session零侵入解决Session共享 单点登录实现 Redis构建Session服务器 使用Redis+C...

code-ortaerc
33分钟前
17
0
小福利

点击有福利 本文分享自微信公众号 - V5codings(gh_c1ec2d16ec93)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

V5codings
2019/11/19
0
0
ubuntu 安装 oh my zsh

https://github.com/ohmyzsh/ohmyzsh https://ohmyz.sh/#install 安装 sudo apt-get install zsh -ysh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh ......

阿豪boy
45分钟前
7
0
自然语言处理中的语言模型简介

作者|Devyanshu Shukla 编译|Flin 来源|medium 在这篇文章中,我们将讨论关于语言模型(LM)的所有内容 什么是LM LM的应用 如何生成LM LM的评估 介绍 NLP中的语言模型是计算句子(单词序列)...

人工智能遇见磐创
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部