欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > spring boot 实现spring mvc过程中WebMvcConfigurer接口及其相关实现类的详细对比

spring boot 实现spring mvc过程中WebMvcConfigurer接口及其相关实现类的详细对比

2025/9/10 21:16:53 来源:https://blog.csdn.net/zp357252539/article/details/147047201  浏览:    关键词:spring boot 实现spring mvc过程中WebMvcConfigurer接口及其相关实现类的详细对比

WebMvcConfigurer接口及其相关实现类的详细对比

WebMvcConfigurer是Spring MVC的核心接口,用于扩展和自定义Spring MVC的配置行为。以下是其相关实现类的对比分析:


在这里插入图片描述

1. WebMvcConfigurer 接口
  • 作用:定义Spring MVC的扩展点,允许用户自定义以下配置:

    • 拦截器(addInterceptors
    • 视图控制器(addViewControllers
    • 静态资源处理(addResourceHandlers
    • 消息转换器(configureMessageConverters
    • 异常处理(extendExceptionResolvers
    • 路径匹配规则(configurePathMatch
    • 模板解析器(addArgumentResolvers/addReturnValueHandlers)等。
  • 实现方式

    • 直接实现接口:需覆盖所有方法(推荐使用Java 8+的默认方法)。
    • 继承适配器类:旧版通过WebMvcConfigurerAdapter实现(已过时)。

2. WebMvcConfigurerAdapter(已过时)
  • 作用:Spring Framework 4.x中提供的适配器类,实现了WebMvcConfigurer接口的所有方法,提供空实现,方便用户继承并覆盖需要的方法。
  • 适用版本:Spring Framework 4.x(在Spring 5.x中被移除)。
  • 状态已弃用,推荐直接实现WebMvcConfigurer接口(Java 8+的默认方法简化了实现)。

3. Spring Boot的实现类

Spring Boot通过以下类实现WebMvcConfigurer接口,提供默认配置:

3.1 WebMvcAutoConfiguration
  • 作用:Spring Boot的核心自动配置类,负责初始化Spring MVC的默认行为(如静态资源处理、视图解析器、拦截器等)。
  • 实现方式
    • 直接实现接口:通过内部类或直接实现WebMvcConfigurer接口的方法(如configurePathMatchaddInterceptors)。
    • Spring Boot 3.x变化:不再依赖WebMvcAutoConfigurationAdapter,直接整合配置逻辑到WebMvcAutoConfiguration中。
3.2 WebMvcAutoConfigurationAdapter(已移除)
  • 历史作用(Spring Boot 2.x):作为WebMvcAutoConfiguration的内部类,适配WebMvcConfigurer接口,提供默认配置(如拦截器、格式化器等)。
  • Spring Boot 3.x状态已移除,其功能被直接整合到WebMvcAutoConfiguration中。

4. 用户自定义的实现类

用户可通过以下方式自定义配置:

@Configuration
public class MyWebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor());}
}

对比表格

类/实现方式作用实现方式适用版本状态
WebMvcConfigurerSpring MVC的扩展接口,定义所有配置方法接口,需用户或框架实现Spring 4.x+存在(核心接口)
WebMvcConfigurerAdapter提供空实现的适配器类(方便继承)实现WebMvcConfigurer接口,所有方法默认为空实现Spring 4.x(已移除于5.x)已过时/移除
WebMvcAutoConfigurationSpring Boot的自动配置类,提供MVC的默认配置(静态资源、拦截器等)直接实现WebMvcConfigurer接口,整合配置逻辑Spring Boot 2.x+存在(核心自动配置)
WebMvcAutoConfigurationAdapter(Spring Boot 2.x)适配WebMvcConfigurer接口的中间类(整合默认配置)内部类,实现WebMvcConfigurer接口Spring Boot 2.x已移除于3.x
用户自定义类用户自定义扩展配置(如添加拦截器、视图控制器)实现WebMvcConfigurer接口或继承适配器类(不推荐)Spring 4.x+存在(用户自定义)

关键差异与注意事项

  1. 适配器类的演变

    • Spring 4.x:用户通过继承WebMvcConfigurerAdapter简化实现。
    • Spring 5.x+WebMvcConfigurerAdapter被移除,推荐直接实现接口(Java 8的默认方法简化了实现)。
    • Spring Boot 3.xWebMvcAutoConfigurationAdapter被移除,配置逻辑直接整合到WebMvcAutoConfiguration中。
  2. 用户自定义配置的优先级

    • Spring Boot会合并默认配置与用户自定义配置,通过@Order@Configuration的加载顺序控制优先级。
  3. 推荐实践

    • 直接实现接口:在Spring 5.x+中,直接实现WebMvcConfigurer接口并覆盖所需方法。
    • 避免使用适配器:优先使用Java 8的默认方法特性,避免过时的适配器类。

示例:自定义配置类

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {// 覆盖需要的方法,其他方法默认实现由接口的默认方法提供@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/home").setViewName("index");}
}

通过以上对比,可以清晰理解不同实现类的历史演变和当前Spring Boot 3.x中的最佳实践。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词