WebMvcConfigurer 与 WebMvcConfigurationSupport 全面解析

WebMvcConfigurer 与 WebMvcConfigurationSupport 全面解析

一、概念介绍

1. WebMvcConfigurer(接口)

用于扩展 Spring MVC 配置,Spring Boot 推荐使用的方式,不会干扰自动配置。

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
    }
}

常用方法:

  • addInterceptors
  • addResourceHandlers
  • configureMessageConverters
  • addCorsMappings
  • addViewControllers
  • configureViewResolvers

2. WebMvcConfigurationSupport(抽象类)

Spring MVC 配置类的父类,继承后等价于 @EnableWebMvc,会关闭 Spring Boot 自动配置,需要开发者全权管理。

@Configuration
public class MyWebMvcConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
    }
}

二、区别对比

对比项WebMvcConfigurerWebMvcConfigurationSupport
类型接口抽象类
推荐程度✅ 推荐❌ 谨慎使用
是否保留 Spring Boot 自动配置✅ 是❌ 否
是否等价于 @EnableWebMvc
是否能共存多个可以只能继承一个
扩展方式增量扩展全量接管
影响不影响默认行为会影响静态资源、Swagger 页面等

三、源码机制简析

WebMvcConfigurer

由 Spring Boot 自动配置类 WebMvcAutoConfiguration 收集所有 WebMvcConfigurer 并组合成一个:

@Bean
public WebMvcConfigurer compositeWebMvcConfigurer() {
    WebMvcConfigurerComposite composite = new WebMvcConfigurerComposite();
    composite.addWebMvcConfigurers(this.configurers);
    return composite;
}

WebMvcConfigurationSupport

是 Spring MVC 配置的核心类,提供 DispatcherServlet、HandlerMapping、ViewResolver 等组件的默认实现。

一旦继承它,就需要:

  • 手动配置静态资源
  • 手动配置 Swagger 页面资源
  • 手动注册视图解析器等

四、实际开发建议

需求推荐方式原因
扩展拦截器、跨域、静态资源等WebMvcConfigurer增量式、不会影响默认行为
需要完全接管 Spring MVC 行为⚠️ WebMvcConfigurationSupport全量接管,需手动补充很多配置
Swagger 页面无法访问、静态资源 404检查是否继承了 WebMvcConfigurationSupport需手动注册资源映射

五、静态资源配置补充

若使用 WebMvcConfigurationSupport,需手动注册静态资源路径:

@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**")
            .addResourceLocations("classpath:/static/");
}

六、总结

  • 推荐使用 WebMvcConfigurer:保留 Spring Boot 默认配置,扩展灵活。
  • 慎用 WebMvcConfigurationSupport:全量接管 Spring MVC,适用于特殊场景如框架开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值