扫码阅读
手机扫码阅读

这得多老的项目才会有这么奇葩的需求

44 2024-11-02

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:这得多老的项目才会有这么奇葩的需求
文章来源:
江南一点雨
扫码关注公众号

多视图解析器在Spring Boot中的应用和原理

松哥分享了如何在Spring Boot中使用多个视图解析器。虽然一般的项目设计中不会这样做,但技术上是可行的,并不难实现。这一需求的探讨涉及到SpringMVC的工作原理。

初始化方法

在SpringMVC中可以配置多个视图解析器,它们在DispatcherServlet#initViewResolvers方法中被加载。这个过程包括设置viewResolvers变量为空,根据detectAllViewResolvers变量值决定是否加载所有视图解析器,并进行排序,如果没有发现任何视图解析器则加载默认视图解析器。

原理分析

视图解析器的作用是在一个请求进入DispatcherServlet后,通过render方法中的resolveViewName方法获取具体的视图。具体的执行逻辑是遍历所有的ViewResolver,并调用它们的resolveViewName方法。在Spring Boot中,通常使用ContentNegotiatingViewResolver,它会选择一个合适的视图解析器来处理请求。

具体应用

在项目中如果存在多个视图解析器,则需要特别注意它们的优先级。例如,FreeMarkerViewThymeleafView组合时,需要确保FreeMarkerViewResolver的优先级高于ThymeleafViewResolver。Spring Boot中默认情况下,这两个的优先级相同,但由于FreeMarkerViewResolver通常先加载,所以实际使用中FreeMarkerViewResolver会优先。对于其他组合,比如FreemarkerJSP的组合,只需要进行常规配置即可。

松哥总结了从原理到应用的多视图解析器问题,并提供了相关视频教程的链接。

今日干货

松哥在公众号上提供了免费获取2TB Java学习资料的信息,让感兴趣的小伙伴可以通过回复获取。

想要了解更多内容?

查看原文:这得多老的项目才会有这么奇葩的需求
文章来源:
江南一点雨
扫码关注公众号