尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

WebMvcConfigurationSupport vs WebMvcConfigurer 的本质区别

WebMvcConfigurationSupport vs WebMvcConfigurer 的本质区别
📅 发布时间:2026/6/18 13:34:00

springboot项目中MVCconfiguration配置是继承WebMvcConfigurationSupport还是实现WebMvcConfigurer 呢?这两者有什么区别呢?

WebMvcConfigurationSupport

  WebMvcConfigurationSupport 是 Spring MVC 的底层配置类,继承了它,Spring Boot 会检测到你提供了自己的 MVC 配置

  • Spring Boot 的 WebMvcAutoConfiguration(自动配置)会完全失效
  • 所有默认配置都没了,包括:
    • ✗ 静态资源映射
    • ✗ 消息转换器
    • ✗ 格式化器
    • ✗ SpringDoc 的自动配置
    • ✗ 其他很多默认功能
  • 继承 WebMvcConfigurationSupport 时,必须手动配置所有资源映射

WebMvcConfigurer 

  WebMvcConfigurer 是 Spring MVC 的扩展接口

  • 实现它只是添加/增强配置,不会覆盖
  • Spring Boot 的自动配置继续生效
  • 自定义配置会叠加在默认配置之上
  • 实现 WebMvcConfigurer 时,Spring Boot 已经自动配置好了:
    •   /static/ 目录自动映射
    •   /webjars/** 自动映射(包括 SpringDoc 的资源)

 

1 public class WebMvcConfiguration extends WebMvcConfigurationSupport {
2     // 完全覆盖 Spring Boot 的 Web 自动配置
3 }
4 
5 public class WebMvcConfiguration implements WebMvcConfigurer {
6     // 只是增强,不会破坏 Spring Boot 的自动配置
7 }

两者作用总结:

类/接口作用典型用法
WebMvcConfigurer Spring Boot 提供的扩展点接口,允许你“定制”Spring MVC 的默认行为 实现接口(或使用 @Configuration + implements WebMvcConfigurer)添加拦截器、格式化器、CORS 等
WebMvcConfigurationSupport Spring MVC 的底层配置类基类,相当于自己“接管整个 MVC 配置” 继承它来自定义 MVC 配置(但会屏蔽 Spring Boot 自动配置)

核心区别:

对比点WebMvcConfigurerWebMvcConfigurationSupport
类型 接口 抽象类
默认配置 不影响 Spring Boot 的自动配置 一旦继承它,会禁用 Spring Boot 自动配置(例如静态资源、默认视图解析器等)
使用方式 推荐在 @Configuration 类中实现 仅在需要完全自定义 MVC 时使用
多配置共存 可以定义多个 WebMvcConfigurer Bean(Spring 会合并) 只能有一个 WebMvcConfigurationSupport 子类
常见场景 添加拦截器、消息转换器、CORS、自定义参数解析器等 编写框架/SDK 或需要完全控制 MVC 配置(很少见)

推荐用法:

 1 @Configuration
 2 public class MyWebMvcConfig implements WebMvcConfigurer {
 3 
 4     @Override
 5     public void addInterceptors(InterceptorRegistry registry) {
 6         registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
 7     }
 8 
 9     @Override
10     public void addCorsMappings(CorsRegistry registry) {
11         registry.addMapping("/**").allowedOrigins("*");
12     }
13 }

高级用法:

1 @Configuration
2 public class MyMvcConfiguration extends WebMvcConfigurationSupport {
3 
4     @Override
5     protected void addInterceptors(InterceptorRegistry registry) {
6         registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
7     }
8 }

但这样一来:

  • Spring Boot 默认的静态资源访问(如 /static/**, /public/**)会失效;

  • 默认的 RequestMappingHandlerAdapter、MessageConverters 等配置也会被覆盖;

  • 需要手动补回全部配置。

因此如果只是加个拦截器或格式化器,不建议用这个。

内部原理简述:

  • WebMvcAutoConfiguration(Spring Boot 提供)默认会加载一套 MVC 配置;

  • 该配置会自动检测是否存在一个继承 WebMvcConfigurationSupport 的类:

    • 如果有,则跳过 Boot 自动配置;

    • 如果没有,则启用默认配置;

  • WebMvcConfigurer 的实现类只是往默认配置中“追加配置”,不会替换掉原有的。

对比总结:

image

 常见使用坑:

  • ❌ 误继承 WebMvcConfigurationSupport → 导致静态资源、Swagger 页面、favicon 等访问 404

  • ❌ 同时存在多个 WebMvcConfigurationSupport 子类 → 启动报错或配置混乱

  • ✅ 想“局部增强”时实现 WebMvcConfigurer 是最稳妥的方案

启动日志对比

extends WebMvcConfigurationSupport:
2025-11-05 09:54:19.928  INFO ... Tomcat started on port 8090
2025-11-05 09:54:19.945  INFO ... Started SmartAlbumApplication in 5.948 seconds

❌ 没有 SpringDoc 初始化日志 → SpringDoc 没有启动

implements WebMvcConfigurer:
重启后能看到类似这样的日志:
INFO ... Initializing Spring DispatcherServlet 'dispatcherServlet'
INFO ... Initialized SpringDoc OpenAPI
INFO ... Started SmartAlbumApplication in X.XXX seconds
 ✅ SpringDoc 正常初始化 → Swagger UI 可以访问

总结

在 Spring Boot 项目中:

  • 🎯 90% 的情况用 implements WebMvcConfigurer(推荐)
  • ⚠️ 只有需要完全自定义 MVC 配置时才用 extends WebMvcConfigurationSupport
  • 💡 记住:继承会覆盖,实现会增强

 

目的建议使用
想在 Boot 默认 MVC 上扩展 ✅ WebMvcConfigurer
想完全控制 MVC 行为(例如做自定义框架、二次封装) ⚠️ WebMvcConfigurationSupport
想自定义静态资源路径但仍保留默认功能 ✅ 使用 WebMvcConfigurer 而非继承 Support

 

 

 

 

 

 

 
 
 
 
 
 
 
 
 

相关新闻

  • 成功拿到备案号 | 详述大模型备案
  • MATLAB与ModBus RTU设备进行串行通信
  • 成都恒利泰宽带锥形电感,一颗顶三颗

最新新闻

  • BetterNCM Installer完全指南:3分钟搞定网易云音乐插件安装
  • 保定食品复合袋生产 | 解决生鲜锁鲜难+定制起订量高 | 雄县源头工厂选型指南参数对照 - 品牌优选官
  • 小红书mcn机构申请入驻哪家代办公司专业靠谱 - 速递信息
  • 2026广州玉镯去哪变现?越秀区翡翠鉴定门店实测 - 逸程
  • 2026黄金回收避坑:私自火烧金饰毁成色,极易被商家压价 - 奢侈品交易观察员
  • 实测盘点|佛山黄金回收门店五大排行榜,靠谱变现门店闭眼选 - 名奢变现站

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号