SpringMVC源码分析和启动流程
https://yq.aliyun.com/articles/707995
在Spring的web容器启动时会去读取web.xml
文件,相关启动顺序为:<context-param> --> <listener> --> <filter> --> <servlet>
,具体为:
- 1、解析
<context-param>
键值对 - 2、创建一个application对象即ServletContext,servlet上下文,用于全局共享
- 3、将
<context-param>
键值对放入ServletContext中,web应用全局共享 - 4、读取
<listener>
标签,创建监听器,一般使用ContextLoaderListener
,如果使用了ContextLoaderListener
,Spring就会创建一个WebApplicationContext对象,这个就是IOC容器
,ContextLoaderListener
创建的IOC容器
是全局共享的,并将其放在ServletContext
中, 键名为WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE
, 读取web.xml
文件里的contextConfigLocation
配置中的xml文件来创建bean - 5、listener创建完毕后如果有Filter会去创建Filter
- 6、初始化Servlet,一般使用DispatchServlet类
- 7、DispatchServlet的父类FrameworkServlet会重写其父类的initServletBean方法,并调用
initWebApplicationContext()
以及onRefresh()
方法 - 8、
initWebApplicationContext()
方法会创建一个当前servlet的一个IOC子容器,如果存在上述的全局WebApplicationContext
则将其设置为父容器,如果不存在上述全局的则父容器为null。 - 9、读取
<servlet>
标签的<init-param>
配置的xml文件并加载相关Bean - 10、
onRefresh()
方法创建Web应用相关组件
SpringMVC源码分析和启动流程的更多相关文章
- springmvc源码分析系列-请求处理流程
接上一篇-springmvc源码分析开头片 上一节主要说了一下springmvc与struts2的作为MVC中的C(controller)控制层的一些区别及两者在作为控制层方面的一些优缺点.今天就结合 ...
- SpringMVC源码分析-400异常处理流程及解决方法
本文涉及SpringMVC异常处理体系源码分析,SpringMVC异常处理相关类的设计模式,实际工作中异常处理的实践. 问题场景 假设我们的SpringMVC应用中有如下控制器: 代码示例-1 @Re ...
- SpringMVC源码解析-DispatcherServlet启动流程和初始化
在使用springmvc框架,会在web.xml文件配置一个DispatcherServlet,这正是web容器开始初始化,同时会在建立自己的上下文来持有SpringMVC的bean对象. 先从Dis ...
- Elasticsearch源码分析(一)启动流程 ModuleBuilder injector
http://blog.csdn.net/u010994304/article/details/50452890 es启动脚本是bin目录下的elasticsearch. 脚本内容不再赘述,java主 ...
- SpringMVC源码分析(3)DispatcherServlet的请求处理流程
<springmvc源码分析(2)dispatcherservlet的初始化>初始化DispatcherServlet的多个组件. 本文继续分析DispatcherServlet解析请求的 ...
- 框架-springmvc源码分析(一)
框架-springmvc源码分析(一) 参考: http://www.cnblogs.com/heavenyes/p/3905844.html#a1 https://www.cnblogs.com/B ...
- [心得体会]SpringMVC源码分析
1. SpringMVC (1) springmvc 是什么? 前端控制器, 主要控制前端请求分配请求任务到service层获取数据后反馈到springmvc的view层进行包装返回给tomcat, ...
- 8、SpringMVC源码分析(3):分析ModelAndView的形成过程
首先,我们还是从DispatcherServlet.doDispatch(HttpServletRequest request, HttpServletResponse response) throw ...
- 7、SpringMVC源码分析(2):分析HandlerAdapter.handle方法,了解handler方法的调用细节以及@ModelAttribute注解
从上一篇 SpringMVC源码分析(1) 中我们了解到在DispatcherServlet.doDispatch方法中会通过 mv = ha.handle(processedRequest, res ...
随机推荐
- python to exe
使用pyinstaller 打包 文件结构如下 命令行cd 进入 project文件夹 ,然后 命令 pyinstaller -F main.py 即可打包文件为一个完整的exe.(不含DLL等)
- Leetcode(878)-第 N 个神奇数字
如果正整数可以被 A 或 B 整除,那么它是神奇的. 返回第 N 个神奇数字.由于答案可能非常大,返回它模 10^9 + 7 的结果. 示例 1: 输入:N = 1, A = 2, B = 3 输出: ...
- .NET 面试题: C# override && overloading (C# 覆写 && 重载)
1 1 1 .NET 面试题, C# ,override , overloading, 覆写, 重载,.NET,ASP.NET, override (覆写/重写): 方法名相同,参数的个数和类型相同, ...
- GitHub in depth
GitHub in depth GitHub 高级玩法 / 进阶教程 https://github.com/trending/dart?since=daily https://github.com/t ...
- Publish/Subscribe Pattern & Vanilla JavaScript
Publish/Subscribe Pattern & Vanilla JavaScript https://en.wikipedia.org/wiki/Publish–subscribe_p ...
- how to share UI components
how to share UI components The shared component cloud · Bit https://bit.dev/ A better way to build w ...
- Top 10 JavaScript errors
Top 10 JavaScript errors javascript errors https://rollbar.com/blog/tags/top-errors https://rollbar. ...
- macOS finder show hidden files
macOS finder show hidden files 显示 MacOS 上的隐藏文件和文件夹 https://zh.wikihow.com/显示Mac-OS-X上的隐藏文件和文件夹 $ def ...
- nasm astrcmp函数 x86
xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export as ...
- 蓝桥杯——试题 算法训练 Yaroslav and Algorithm
试题 算法训练 Yaroslav and Algorithm 资源限制 时间限制:100ms 内存限制:128.0MB 问题描述 (这道题的数据和SPJ已完工,尽情来虐吧!) Yaroslav喜欢算法 ...