Spring MVC中的IoC容器初始化
来源:互联网 发布:大数据分析师资格证书 编辑:程序博客网 时间:2024/05/22 00:12
Spring Framework本身没有Web功能,Spring MVC使用WebApplicationContext类扩展ApplicationContext,使得拥有web功能。那么,Spring MVC是如何在web环境中创建IoC容器呢?web环境中的IoC容器的结构又是什么结构呢?web环境中,spring IoC容器是怎么启动呢?
先看一下WebApplicationContext是如何扩展ApplicationContext来添加对Web环境的支持的。WebApplicationContext接口定义如下:
对于web容器中创建IoC容器的过程,我们从web.xml配置文件讲起。看一下Spring MVC的web.xml中的相关配置:
在web.xml配置文件中,有两个主要的配置:ContextLoaderListener和DispatcherServlet。同样的关于spring配置文件的相关配置也有两部分:context-param和DispatcherServlet中的init-param。那么,这两部分的配置有什么区别呢?它们都担任什么样的职责呢?
在Spring MVC中,Spring Context是以父子的继承结构存在的。Web环境中存在一个ROOT Context,这个Context是整个应用的根上下文,是其他context的双亲Context。同时Spring MVC也对应的持有一个独立的Context,它是ROOT Context的子上下文。
对于这样的Context结构在Spring MVC中是如何实现的呢?下面就先从ROOT Context入手,ROOT Context是在ContextLoaderListener中配置的,ContextLoaderListener读取context-param中的contextConfigLocation指定的配置文件,创建ROOT Context。下面看一下ContextLoaderListener中创建context的源码:
再看一下WebApplicationContext对象是如何创建的:
以上是web容器中根上下文的加载与初始化,下面介绍一下Spring MVC对应的上下文是如何加载的。
Spring MVC中核心的类是DispatcherServlet,在这个类中完成Spring context的加载与创建,并且能够根据Spring Context的内容将请求分发给各个Controller类。DispatcherServlet继承自HttpServlet,关于Spring Context的配置文件加载和创建是在init()方法中进行的,主要的调用顺序是init-->initServletBean-->initWebApplicationContext。
先来看一下initWebApplicationContext的实现
通过initWebApplicationContext方法的调用,创建了DispatcherServlet对应的context,并将其放置到ServletContext中,这样就完成了在web容器中构建Spring IoC容器的过程。
最后,在分别给出ContextLoaderListener和DispatcherServlet构建context的时序。
ContextLoaderListener构建Root Context时序图:
DispatcherServlet创建context时序图:
- Spring MVC中的IoC容器初始化
- Spring MVC中的IoC容器初始化
- Spring MVC中的IoC容器初始化
- Spring IoC容器初始化
- Spring Ioc容器初始化
- Spring-IoC容器初始化
- Spring源码阅读之IoC容器初始化3 -- BeanDefinition在IoC容器中的注册
- spring-mvc之ioc容器
- spring 技术内幕--IOC初始化之BeanDefinition的在IOC容器中的注册
- Spring源码学习(二):IOC容器在WEB容器中的初始化
- 模拟spring中的IOC容器
- spring IoC容器初始化简单分析
- SPRING原理解析-Ioc容器初始化
- Spring IOC容器bean初始化源码分析
- Spring IOC源码详解之容器初始化
- Spring 容器IOC的初始化过程
- Spring IOC源码详解之容器初始化
- Spring IOC容器初始化过程分析
- 批量更改文件编码
- 无聊,用Rabin-Miller算法算算素数
- 自由泳的速度下降了
- Oracle存储过程笔记
- 全球首部MeeGo平板电脑或于下周正式上市
- Spring MVC中的IoC容器初始化
- 虚极静笃
- 首届“MeeGo开发者日”9月14日开幕
- Xen虚拟机配置、安装、使用
- .NET 读取 JSON格式的数据
- 在win7下安装SQL sever2005(完整版)
- mysql timestamp
- skyline 让人又爱又恨
- Oracle 数据文件迁移 灾难恢复