今天让我们来看看另一个重要的类:WebMvcAutoConfigurationAdapter。先来看看它的声明:

@Configuration
@Import(EnableWebMvcConfiguration.class)
@EnableConfigurationProperties({ WebMvcProperties.class, ResourceProperties.class })
@Order(0)
public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer, ResourceLoaderAware {

很显然,它也是SpringBoot的一个配置类,@Improt注解是被用来整合所有在@Configuration注解中定义的bean配置。这其实很像我们将多个XML配置文件导入到单个文件的情形。@Import注解实现了相同的功能。
再往下看可以看到SpringBoot中常见的viewResolver

    @Bean@ConditionalOnMissingBeanpublic InternalResourceViewResolver defaultViewResolver() {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix(this.mvcProperties.getView().getPrefix());resolver.setSuffix(this.mvcProperties.getView().getSuffix());return resolver;}@Bean@ConditionalOnBean(View.class)@ConditionalOnMissingBeanpublic BeanNameViewResolver beanNameViewResolver() {BeanNameViewResolver resolver = new BeanNameViewResolver();resolver.setOrder(Ordered.LOWEST_PRECEDENCE - 10);return resolver;}@Bean@ConditionalOnBean(ViewResolver.class)@ConditionalOnMissingBean(name = "viewResolver", value = ContentNegotiatingViewResolver.class)public ContentNegotiatingViewResolver viewResolver(BeanFactory beanFactory) {ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();resolver.setContentNegotiationManager(beanFactory.getBean(ContentNegotiationManager.class));// ContentNegotiatingViewResolver uses all the other view resolvers to locate// a view so it should have a high precedenceresolver.setOrder(Ordered.HIGHEST_PRECEDENCE);return resolver;}

接着往下看,可以看到这个是配置区域的。@ConditionalOnProperty表示如果在application.properties中配置了spring.mvc.locale属性,则该配置会生效。

    @Bean@ConditionalOnMissingBean@ConditionalOnProperty(prefix = "spring.mvc", name = "locale")public LocaleResolver localeResolver() {if (this.mvcProperties.getLocaleResolver() == WebMvcProperties.LocaleResolver.FIXED) {return new FixedLocaleResolver(this.mvcProperties.getLocale());}AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();localeResolver.setDefaultLocale(this.mvcProperties.getLocale());return localeResolver;}

再往下看是配置静态资源(包括/webjars/**,classpath:/META-INF/resources/webjars/")和favicon(可以通过在application.properties中设置spring.mvc.favicon.enabled来启用或禁用)

好了,文章到这里就结束了,静态资源这一块并没有什么特别的地方。我们需要理解的是这几个注解的用法,还有使用了配置属性,可以允许用户对其进行自定义。还有一个值得提一下,默认的地域解析器只会处理一个地域,通过上面提到的spring.mvc.locale来配置。

精通SpringBoot——第二篇:视图解析器,静态资源和区域配置相关推荐

  1. spring多个视图解析器_在Spring中配置多个View解析器

    spring多个视图解析器 1.简介 在Spring中,提供了View Resolver来使用模型中可用的数据来解析视图,而无需与JSP,Velocity或Thymeleaf等View技术紧密绑定. ...

  2. springboot下MVC的MessageConverters和静态资源位置的配置

    文章目录 1. WebMvcConfigurationSupport.WebMvcConfigurer 区别 2. 自定义消息转换器MessageConverters 3. 静态资源 3.1 静态资源 ...

  3. 【SpringMVC框架】小结+视图解析器配置前缀和后缀

    1.入门程序小结 通过入门程序理解springmvc前端控制器.处理器映射器.处理器适配器.视图解析器用法. 前端控制器配置: 第一种:*.action,访问以.action结尾 由Dispatche ...

  4. Spring Boot配置视图解析器

    2019独角兽企业重金招聘Python工程师标准>>> 在SpringBoot中,视图解析器的配置可以参考 Spring Boot数据源配置 #方式一:直接在属性文件中,加入 spr ...

  5. SpringMVC的视图解析器

    文章目录 SpringMVC的自定义视图解析器 [1] SpringMVC的视图解析器 [2] SpringMVC的自定义视图解析器 SpringMVC自定义视图解析器的使用 [1] 目前项目资源的声 ...

  6. jsp springmvc 视图解析器_springMVC配置jsp/html视图解析器

    1.maven项目引入freemark相关jar包 freemaker是以个模板引擎,可以根据提供的数据和创建好的模板,去自动的创建html静态页面.所以在返回html视图时可以用这个引擎结合数据生成 ...

  7. jsp springmvc 视图解析器_SpringMVC学习笔记

    Springmvc springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合. springmvc是一个基于mvc的web框架. 基本概念和执行过程 ...

  8. --------------springMVC的开篇,以及底层执行流程,配置视图解析器,静态资源的访问,流程图,工作原理...

    springMVC: 一:创建第一个项目 01.引入需要的jar包 web webmvc context context-support 02.在web.xml文件中 配置我们需要的核心控制器 Dis ...

  9. SpringBoot配置模板引擎之视图解析器失效问题排查

      1.问题排查 在整合SpringBoot与Httl模板引擎的时候,博主曾遇到过这样的问题:通过浏览器访问一个Controller方法时,返回httl视图,但页面报404错误. 通过断点调试,访问u ...

最新文章

  1. 报告:下一代技术革命“AI”来袭
  2. JAVA学习笔记--初始化与清理
  3. JDK8-lambda表达式四种forEach性能对比
  4. leetcode 438. Find All Anagrams in a String | 438. 找到字符串中所有字母异位词(Java)
  5. 高性能动态编译库Natasha发布1.0版本!
  6. AgileEAS.NET 4.0 重构裁剪后的程序集说明
  7. 嗅探工具java_权宜之计 让迅雷5支持傲游2嗅探器来下载视频
  8. Win7-64bit下MapX的安装和使用
  9. MySQL复制表的三种方式
  10. centos安装NVI驱动
  11. Docker - 常见操作命令篇
  12. vmbox挂载共享目录
  13. 牛客网verilog刷题_VL47 格雷码计数器
  14. 记一次 .NET 某桌面奇侠游戏 非托管内存泄漏分析
  15. NRF24L01的使用
  16. 【vs2019】vs2019(Visual Studio2019)离线安装包下载详细步骤
  17. 物流围城 让今年双11商家拿什么发货?
  18. qq邮箱服务器在哪里设置密码,手把手教程 邮箱这样设置,就对了
  19. 综述:人类电生理的脑连接组学
  20. leetcode 169(简单)题解:给定一个大小为 *n* 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 *⌊ n/2 ⌋* 的元素。

热门文章

  1. SQL性能第2篇:查询分析和访问路径制定
  2. React 第十章 状态提升
  3. Java this添加窗口,如何使一个窗口,看起来像这样在Java中? (How to make a window look like this in Java?)...
  4. Netty 的 ByteBuf 是如何支持 堆内存非池化 实现的
  5. mark python新手必碰到的问题---encode与decode,中文乱码[转]
  6. No valid Qt version set. Set one in Tools/Options 问题(QT)
  7. Laravel核心解读 -- Response
  8. 外包以小时计算金额的费用_基金申购赎回费用计算实例
  9. java解决XSS攻击常用方法总结
  10. 首次自动对接!美国离本土载人航天又进一步,SpaceX成功抵达国际空间站