近期看了点Spring boot的框架源码,研究了一下WEB Mvc的视图解析器,记录一下,以备以后查阅.如果认知错误,还请小伙伴指教讨论.
-
几个核心的类
DispatherServlet(前端控制器)、ViewResolver(视图解析器)、View(视图类) -
以下使用两个视图解析器作为例子,比较好区别
其一:ThymeleafViewResolver
另一:InternalResourceViewResolver(系统默认实现)
在WebMvcAutoConfiguration 自动注入
1.DispatcherServlet在选择视图解析器的时候,以优先级为处理原则,此优先级是根据该ViewResolver实现Ordered接口或者使用@Order注解赋值,数字最小优先级越高为原则.
2.通过判断,返回一个具体的View类,最终通过3、4步骤渲染成HTML或者是XML等视图内容.
ViewResolver视图解析器在DispatcherServlet解析
源码类DispatcherServlet
- 关于ViewResovlers排序
系统通过下图该方法,对于视图解析器进行排序sort,排序的原则还是按照Order的大小(ps viewResolvers是一个List集合)