Spring MVC启动过程
2019-10-11 10:00:00 0 举报
Spring MVC启动流程
作者其他创作
大纲/内容
1.初始化应用部署描述文件中每一个listener。2.初始化ServletContextListener实现类,调用contextInitialized()方法。3.初始化应用部署描述文件中每一个filter,并执行每一个的init()方法。4.按照顺序<load-on-startup>来初始化servlet,并执行init()方法。先初始化lisener,再filter,最后servlet
FrameworkServlet通过initServletBean进行web上下文初始化,调用initWebApplicationContext给子类初始化过程中所作的事情:1:创建sevlet注入的上下文2:查找已经绑定的上下文3:如果没有找到相应的上下文,则制定父亲为ContextLoaderListener4、刷新上下文(执行一些初始化)
整个DispatcherServlet初始化的过程和做了些什么事情,具体主要做了如下两件事情:1、初始化Spring Web MVC使用的Web上下文,并且可能指定父容器为(ContextLoaderListener加载了根上下文);2、初始化DispatcherServlet使用的策略,如HandlerMapping、HandlerAdapter等。
FrameworkServlet继承HttpServletBean,通过initServletBean()进行Web上下文初始化,该方法主要覆盖一下两件事情:1:初始化web上下文;2:提供给子类初始化扩展点;
Spring MVC启动流程
Spring Web MVC主要有哪些特殊的Bean?1.Controller:处理器/页面控制器,做的是MVC中的C的事情,但控制逻辑转移到前端控制器了,用于对请求进行处理;2.HandlerMapping:请求到处理器的映射,如果映射成功返回一个3。HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象;如BeanNameUrlHandlerMapping将URL与Bean名字映射,映射成功的Bean就是此处的处理器;3.HandlerAdapter:HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;如SimpleControllerHandlerAdapter将对实现了Controller接口的Bean进行适配,并且掉处理器的handleRequest方法进行功能处理;4.ViewResolver:ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;如InternalResourceViewResolver将逻辑视图名映射为jsp视图;5.LocalResover:本地化解析,因为Spring支持国际化,因此LocalResover解析客户端的Locale信息从而方便进行国际化;6.ThemeResovler:主题解析,通过它来实现一个页面多套风格,即常见的类似于软件皮肤效果;7.MultipartResolver:文件上传解析,用于支持文件上传;8.HandlerExceptionResolver:处理器异常解析,可以将异常映射到相应的统一错误界面,从而显示用户友好的界面(而不是给用户看到具体的错误信息);9.RequestToViewNameTranslator:当处理器没有返回逻辑视图名等相关信息时,自动将请求URL映射为逻辑视图名;10.FlashMapManager:用于管理FlashMap的策略接口,FlashMap用于存储一个请求的输出,当进入另一个请求时作为该请求的输入,通常用于重定向场景
DispatcherServlet类结构设计
HttpServletBean继承HttpServlet,因此在Web容器启动时将调用它的init方法,该初始化方法的主要作用::::将Servlet初始化参数(init-param)设置到该组件上(如contextAttribute、contextClass、namespace、contextConfigLocation),通过BeanWrapper简化设值过程,方便后续使用;:::提供给子类初始化扩展点,initServletBean(),该方法由FrameworkServlet覆盖。
DispatcherServlet继承FrameworkServlet,并实现了onRefresh()方法提供一些前端控制器相关的配置DispatcherServlet启动时会进行我们需要的Web层Bean的配置,如HandlerMapping、HandlerAdapter等,而且如果我们没有配置,还会给我们提供默认的配置。
0 条评论
下一页