从零开始学习Spring。让大家对spring的每一个jar包都熟悉。
今天搭建的工程无法跑起来。只是剖析一部分。我们先从web.xml的配置入手。
-
新搭建的工程,先配置listener,
image.png -
pom.xml文件 只添加了两个:spring-web, servlet-api
image.png -
最终得到依赖的jar列表:
image.png -
看下面的依赖关系
image.png
spring-aop。
这个是面向切面编程的东西。虽然重要,但是在基础开发中不是一定要用到的。先去掉。
servlet-api
这个是在pom引入的,用来查看源码,tomcat会提供jar,主要相关的是ServletContext,它是一个域对象,官方叫servlet上下文。spring相关的容器都会存放在这里。(大家还记得不用spring的时候搭建的web工程吗,doGet(...) DoPost(...) 方法,上面就有很多servletContext的取值存值操作)
spring-web。
在web.xml中配置了一个监听器,他的作用是用来接收web application 关于 servlet context改变的通知(实现ServletContextListener接口)。而spring正是利用这个接收通知的特性,实现工程启动的时候,就初始化spring容器。
1.看下图监听器有一个初始化方法,createContextLoader方法在3.2.9的实现中是返回null的,所以contextLoader这个对象就是他自身----this。 主要看initWebApplicationContext方法。
image.png-
创建WebApplicationContext
image.png
在determineContextClass这个方法中,来确定web.xml是否有配置context-class,没有配置则使用默认的XmlWebApplicationContext,这个默认的配置文件定义在spring-web中。
image.png所以这里最主要的就是初始化xmlWebApplicationContext这个全局的对象。
他就是context currentContext,由他可以获得servletContext,应用名称,id,发布名称,session。等等
网友评论