SpringBoot自动配置了MVC究竟都配置了那些东西,该如何自定义呢?
摸了!直接看官方文档(其实我也看不大懂英语)

https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/htmlsingle/#using-boot

写着SpringBoot自动配置了SpringMVC,支持两种视图解析器ContentNegotiatingViewResolver ,
BeanNameViewResolver ,
,巴拉巴拉的

我们去看看他是如何实现ContentNegotiatingViewResolver 的

他实现了视图解析器接口,接口中就一个方法,看他是怎么重写的

获取视图解析器列表,找到best视图解析器,并且返回
进入getCandidateViews这个方法看看他是如何获取解析器列表的

拿到列表,遍历一遍,候选视图加入列表

返回best视图解析器

然后看这个
If you want to keep those Spring Boot MVC customizations and make more MVC customizations (interceptors, formatters, view controllers, and other features), you can add your own @Configuration class of type WebMvcConfigurer but without @EnableWebMvc.
如果你想保持MVC的默认配置并且添加配置,你就得实现WebMvcConfigurer 并且加上@Configuration但是不能加@EnableWebMvc。试试去

实现了个视图解析器并且塞进了bean,直接去DispatchServlet打个断点看下


可以看到前两个是他自带的视图解析器,第三个是模板自带的(这就是为啥添加模板后直接返回值就行了,默认会给到模板的解析器然后解析输出),第四个就是我们写的。完成了自定义配置

皮一下,官方文档说不能加@EnableWebMvc
我不!

这个注解里面只是引入了一个配置类
我们回到DispatchServlet去看看发生了什么

你会发现他默认配置的解析器飞了。所以是怎么做到的呢?回到WebMvcAutoConfiguration去看下源码(因为那个Boot默认的视图解析器是在这里面创建的)

这个注解就是当WebMvcConfigurationSupport这个Bean存在的时候这个类就失效了我们打开之前那个
@EnableWebMvc注解看下里面导入的是什么

导入的这个类继承了WebMvcConfigurationSupport所以默认配置失效,所以官方文档不让你加这个注解。

SpringBoot自动配置MVC原理相关推荐

  1. SpringBoot自动配置Redis原理

    SpringBoot自动配置Redis原理 目录 SpringBoot自动配置Redis原理 一.SpringBoot自动配置Redis原理 一.自动配置redis RedisAutoConfigur ...

  2. springboot自动配置的原理_SpringBoot实战:详解SpringBoot自动配置原理

    SpringBoot 自动配置主要通过 @EnableAutoConfiguration, @Conditional, @EnableConfigurationProperties 或者 @Confi ...

  3. SpringBoot自动配置的原理及实现

    SpringBoot的核心就是自动配置,自动配置是基于条件判断配置Bean 自动配置的源码在spring-boot-autoconfigure-2.2.13.RELEASE SpringBoot运行原 ...

  4. springboot自动配置的原理_SpringBoot自动配置原理

    SpringBoot的启动入口就是一个非常简单的run方法,这个run方法会加载一个应用所需要的所有资源和配置,最后启动应用. 通过查看run方法的源码,我们发现,run方法首先启动了一个监听器,然后 ...

  5. 聊一聊 SpringBoot 自动配置的原理

    解析思路 我们建立好一个SpringBoot的工程后,我们将从启动类,SpringBootApplication开始进行探究. 开始解析 首先我们建立一个 Springboot的工程.找到启动类,我们 ...

  6. SpringBoot自动配置实现原理及源码解析(2.3.x)

    约定优于配置,这是SpringBoot中的一个很重要特性,此特性让我们可以在几秒中之内完成一个项目的搭建,无需任何配置,本文就通过深入源码的方式来探索下自动配置的实现过程 为什么要自动配置 手动配置很 ...

  7. 笑死,面试官又问我SpringBoot自动配置原理

    面试官:好久没见,甚是想念.今天来聊聊SpringBoot的自动配置吧? 候选者:嗯,SpringBoot的自动配置我觉得是SpringBoot很重要的"特性"了.众所周知,Spr ...

  8. SpringBoot实战之SpringBoot自动配置原理

    www.cnblogs.com/leihuazhe/p- SpringBoot 自动配置主要通过 @EnableAutoConfiguration, @Conditional, @EnableConf ...

  9. springboot自动配置原理

    概述 Springboot的基本认识 对于Spring框架,我们接触得比较多的是Spring mvc,Spring IOC.AOP.DI.而这框架如果在使用过程中,随着项目越来越大,引入的技术越来越多 ...

最新文章

  1. 2019年云计算行业深度报告
  2. Linux 和 Windows 平台不同的 UCS-2 编码
  3. ESXI转HYPER-V,问题接二连三啊(VMDK转VHD)
  4. spring 开发环境_设置Spring 3开发环境
  5. Spring的@Transactional注解踩坑
  6. html输入地址提示错误,高德地图开发之输入框内伴随地址的输入,动态给出地址选择提示...
  7. 利用jira-python及selenium完成jira的统计报表及日报的填写
  8. Windows-Server-2012-如何实现多个用户远程桌面登陆
  9. VS2013添加反编译工具-ILDasm
  10. matlab距离平方和公式推导,求助高手,用matlab求两幅图像平方和再开根号公式怎样表达?...
  11. mysql 14 关闭休眠链接
  12. 阿里P9纯手打亿级高并发系统设计手册,走进阿里的架构世界
  13. ”左行右立“折寿探秘
  14. 【原创】Moon在2005的辉煌
  15. C# 模拟鼠标点击(鼠标按键损坏,辅助工具)
  16. pandas DataFrame数据重命名列名的几种方式
  17. 《Python深度学习从零开始学》简介
  18. 灰流丽能无效融合么_游戏王:史上最强融合卡片,不可阻挡,无法逆转!
  19. mac下安装redis 和 redis可视化工具rdm并且连接redis
  20. 互联网信息服务(仅限互联网信息服务)

热门文章

  1. 2012年上海市高等学校计算机等级考试试卷,2012年上海市高等学校计算机等级考试试卷 一级(2009版考纲模拟卷)...
  2. Java开发人员必须掌握的Linux命令-学以致用(五)
  3. python博弈矩阵分析器(功能不完善)
  4. 音视频基础——声音的主要概念
  5. 1分钟了解 Tree-shaking
  6. 人力资源管理:理论与实务第五章
  7. 电梯ic卡信息服务器的线怎么接,电梯IC卡分层制器安装接线图.doc
  8. Java基础入门教程,零基础小白自学Java必备教程
  9. 2023年程序员生存指南:不做低代码项目,不用go刷题,不去要求名校的岗位,不相信任何人的经验!
  10. 在Qt中制作入门动画-1