SpringMVC启动时的核心类
springmvc容器启动过程主要的核心类有DispatcherServlet、FrameworkServlet、HttpServletBean这三个类。图一是三个类的之间的关系, HttpServletBean、FrameworkServlet均为抽象类。DispatcherServlet是FrameworkServlet一个具体实现的子类,从DispatcherServlet的继承体系来看,DispatcherServlet本质是一个HttpServlet。所以我我们只有在web.xml中配置DispatcherServlet才能够启动SpringMVC,图二为DispatcherServlet的配置,通过该配置将所有以/结尾的http请求都交由该Servlet去处理
SpringMVC的启动过程
解析web.xml。tomcat启动时会解析项目中web.xml,解析出我们在web.xml中配置的Listener、Servlet、和Filter。
加载并实例化DispatcherServlet。如果DispatcherServlet的load-on-startup参数为正数时会直接加载该Servlet。加载完DispatcherServlet后会实例化一个对象(基于单例),并调用Servlet对象的init放法。
执行init方法。DispatcherServlet中并没有init方法,init是其父类HttpServletBean中的方法,init方法HttpServletBean中被定义为了final方法,其子类不能再重写该方法。在主要执行的内容有根据init-param配置设置Servlet对象的一些属性、执行initServletBean方法进行初始化ServletBean。以下代码为init方法的实现