当前位置: 首页 > news >正文

【springboot】 WebMvcConfigurer的使用

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

二、实现 WebMvcConfigurer
创建配置类:
在 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 {
// 自定义配置在这里添加
}

配置视图解析器:
通过实现 configureViewResolvers 方法,可以自定义视图解析器。

import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;

@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/views/", ".jsp");
}
添加拦截器:
通过实现 addInterceptors 方法,可以添加拦截器。

import org.springframework.web.servlet.config.annotation.InterceptorRegistry;

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
}
配置跨域请求:
通过实现 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);
}
添加静态资源处理:
通过实现 addResourceHandlers 方法,可以配置静态资源的处理。

import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

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

import org.springframework.http.converter.HttpMessageConverter;

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

import org.springframework.http.converter.HttpMessageConverter;

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

import org.springframework.http.converter.HttpMessageConverter;

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

三、详细示例
下面是一个完整的 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());
}

}

http://www.zskr.cn/news/56629.html

相关文章:

  • 2025年11月江苏/徐州vr设备、vr体验馆、5d影院、9d影院、拓普互动厂家推荐榜:拓普互动强势登顶
  • 2025年11月中国/江苏/徐州vr设备、vr体验馆、5d影院、9d影院、拓普互动厂家TOP10:拓普互动领跑榜单
  • 高考数学如何有效提分?一位家长关于分阶段选择数学老师的心得体会
  • 让 Maven 能找到本地 JAR 而无需把它上传到公共仓库:
  • TSMaster + SkyEye:更早、更快、更全面的数字化验证正在成为行业共识
  • python-oop-1
  • 2025 年国内水质采样器厂家市场排名与品牌影响力分析报告
  • Windows Server 2016 中文版、英文版下载 (2025 年 11 月更新)
  • 每日反思(2025年11月21日)
  • ARC 杂题乱做 #1
  • 工作小结——Qwen2-7B-Instruct调用
  • 最终留学中介文书口碑对决!哪家用户评价最炸裂?
  • 2025年11月新疆学历提升/成人学历/专升本/自考本科/高起专服务机构TOP10:新疆中研教育领跑
  • 2025留学中介排行榜TOP10大揭秘:高效文书服务
  • 留学中介文书用户好评榜!一半是行家!哪家口碑可靠?
  • 把JAVA的数字信封翻译成C#.NET的
  • debug - eclipseCPP + openocd + 引入arm-gcc makefile工程来单步调试 - 教程
  • 数字时代的质量新篇:当工厂开始“思考”
  • 阿里云ESA:国内业务加速的务实之选
  • 留学咨询选对才靠谱 2025专业度与响应速度双优机构榜单
  • 留学申请亮点哪家绝?2025前十机构特色服务矩阵深度拆解
  • 一次编译器优化的陷阱
  • 2025襄阳装修公司排名与推荐,从设计到售后的全维度参考
  • 留学机构比较新视角 2025十大机构文本与申请结果排名
  • 2025 年11月天津电线电缆优质厂家 TOP10 推荐:含塑料绝缘控制 / 柔性拖链 / 软电缆/铝电缆 /架空绝缘 /绝缘 /屏蔽等多品类电缆生产厂家盘点
  • 综合评分榜单,表现最亮眼的十大留学机构盘点
  • 2025年淮安婚纱摄影品牌排行:专业与口碑双重认证,弥素摄影领跑
  • 专业淮安婚纱摄影摄影店2025年排行:弥素摄影专业领衔
  • ai写论文工具推荐:提升学术创作效率的实用选择
  • P14534 [RMI 2018] W