赞
踩
有不少人对于springmvc的初始化过程并不太清晰,下面这篇博客将帮助你理解springmvc的深层次概念.
众所周知springmvc最主要的核心拦截器就是DispatcherServlet,它其实就是一个增强版Servlet,是对HttpServlet的进一步封装.
springmvc在HttpServlet的基础上增加了三个子类,分别是HttpServletBean,FrameworkServlet,DispatcherServlet.重写了init,service等方法.
当第一次请求过来之后,会调用HttpServletBean的init方法,因为HttpServletBean重写了init方法.
在HttpServletBean的init方法中最后会去走initServletBean方法,而initServletBean这个方法其实是一个空方法,目的是让子类FrameworkServlet进行重写
我们走到FrameworkServlet子类的initServletBean中可以看到,最为核心的一个方法就是initWebApplicationContext方法,其他的代码主要是为了打印日志,目的是方便追踪错误.
好,现在我们进入到initWebApplicationContext的方法中,直接看我用红线圈出的部分,因为方法太多,如果一一讲完的话是非常耗费时间的,大家主要看重要部分即可.当大家点击进入onRefresh方法中会发现又是一个空方法,是留给子类去实现的,这也是框架里面惯用的套路.
我们进入到onRefresh的方法,这里是重头戏了,onRefresh方法调用了initStrategies方法,该方法初始化了很多springmvc的重要类,例如:映射器,适配器,视图解析器等,这也是你在做项目时候发送请求为什么映射器等java类就已经存在的原因.到此springmvc的初始化完成.
下一篇博客讲解springmvc的执行流程的源码分析
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。