【springboot】中使用--WebMvcConfigurer

简介: 通过实现 `WebMvcConfigurer` 接口,Spring Boot 开发者可以灵活地自定义和扩展 Spring MVC 的配置。无论是视图解析、拦截器、跨域请求处理,还是静态资源和消息转换器配置,`WebMvcConfigurer` 都提供了一致的接口来实现这些功能。掌握这些配置方法,可以使开发者在 Spring Boot 项目中更加游刃有余地进行各种定制化需求的开发。

在 Spring Boot 中使用 WebMvcConfigurer

WebMvcConfigurer 是 Spring MVC 提供的一个扩展接口,用于配置 Spring MVC 的各种功能。在 Spring Boot 应用中,通过实现 WebMvcConfigurer 接口,可以定制和扩展默认的 Spring MVC 配置。以下是对 WebMvcConfigurer 的详细解析及其常见用法。

一、基本概念

WebMvcConfigurer 接口提供了一组回调方法,用于配置 Spring MVC 的各种方面,如视图解析器、拦截器、跨域请求、消息转换器等。通过实现这些方法,可以方便地自定义 MVC 配置。

二、实现 WebMvcConfigurer

  1. 创建配置类
    在 Spring Boot 应用中,创建一个配置类并实现 WebMvcConfigurer 接口。

    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    @Configuration
    @EnableWebMvc
    public class MyWebMvcConfig implements WebMvcConfigurer {
        // 自定义配置在这里添加
    }
    ​
    
  2. 配置视图解析器
    通过实现 configureViewResolvers 方法,可以自定义视图解析器。

    import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
    
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/views/", ".jsp");
    }
    ​
    
  3. 添加拦截器
    通过实现 addInterceptors 方法,可以添加拦截器。

    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
    }
    ​
    
  4. 配置跨域请求
    通过实现 addCorsMappings 方法,可以配置跨域请求。

    import org.springframework.web.servlet.config.annotation.CorsRegistry;
    
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("http://example.com")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowCredentials(true)
                .maxAge(3600);
    }
    ​
    
  5. 添加静态资源处理
    通过实现 addResourceHandlers 方法,可以配置静态资源的处理。

    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/");
    }
    ​
    
  6. 配置消息转换器
    通过实现 configureMessageConverters 方法,可以添加或自定义消息转换器。

    import org.springframework.http.converter.HttpMessageConverter;
    
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(new MyCustomMessageConverter());
    }
    ​
    

思维导图

WebMvcConfigurer

视图解析器配置

添加拦截器

跨域请求配置

静态资源处理

消息转换器配置

configureViewResolvers

addInterceptors

addCorsMappings

addResourceHandlers

configureMessageConverters

三、详细示例

下面是一个完整的 WebMvcConfigurer 配置示例,展示了如何配置视图解析器、拦截器、跨域请求、静态资源处理和消息转换器。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/views/", ".jsp");
    }

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

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("http://example.com")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowCredentials(true)
                .maxAge(3600);
    }

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

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(new MyCustomMessageConverter());
    }
}
​

总结

通过实现 WebMvcConfigurer 接口,Spring Boot 开发者可以灵活地自定义和扩展 Spring MVC 的配置。无论是视图解析、拦截器、跨域请求处理,还是静态资源和消息转换器配置,WebMvcConfigurer 都提供了一致的接口来实现这些功能。掌握这些配置方法,可以使开发者在 Spring Boot 项目中更加游刃有余地进行各种定制化需求的开发。

目录
相关文章
|
Java Spring
spring boot 中WebMvcConfigurer相关使用总结
spring boot 中WebMvcConfigurer相关使用总结
250 3
springboot WebMvcConfigurer详解自定义配置请求静态资源
springboot WebMvcConfigurer详解自定义配置请求静态资源
359 0
|
Java
【SpringBoot】WebMvcConfigurer实现类不被加载(o.s.web.servlet.PageNotFound : No mapping for GET)的问题解决
【SpringBoot】WebMvcConfigurer实现类不被加载(o.s.web.servlet.PageNotFound : No mapping for GET)的问题解决
1527 0
|
Java 容器
SpringBoot - WebMvcConfigurationSupport & WebMvcConfigurer 共存问题
SpringBoot - WebMvcConfigurationSupport & WebMvcConfigurer 共存问题
287 0
|
Java fastjson Spring
精通SpringBoot——第三篇:详解WebMvcConfigurer接口
精通spring boot 之WebMvcConfigurer接口的实现
79078 0
|
1月前
|
JavaScript Java 关系型数据库
基于springboot的项目管理系统
本文探讨项目管理系统在现代企业中的应用与实现,分析其研究背景、意义及现状,阐述基于SSM、Java、MySQL和Vue等技术构建系统的关键方法,展现其在提升管理效率、协同水平与风险管控方面的价值。
|
1月前
|
搜索推荐 JavaScript Java
基于springboot的儿童家长教育能力提升学习系统
本系统聚焦儿童家长教育能力提升,针对家庭教育中理念混乱、时间不足、个性化服务缺失等问题,构建科学、系统、个性化的在线学习平台。融合Spring Boot、Vue等先进技术,整合优质教育资源,提供高效便捷的学习路径,助力家长掌握科学育儿方法,促进儿童全面健康发展,推动家庭和谐与社会进步。
|
1月前
|
JavaScript Java 关系型数据库
基于springboot的古树名木保护管理系统
本研究针对古树保护面临的严峻挑战,构建基于Java、Vue、MySQL与Spring Boot技术的信息化管理系统,实现古树资源的动态监测、数据管理与科学保护,推动生态、文化与经济可持续发展。
|
26天前
|
监控 安全 JavaScript
2025基于springboot的校车预定全流程管理系统
针对传统校车管理效率低、信息不透明等问题,本研究设计并实现了一套校车预定全流程管理系统。系统采用Spring Boot、Java、Vue和MySQL等技术,实现校车信息管理、在线预定、实时监控等功能,提升学校管理效率,保障学生出行安全,推动教育信息化发展。