【开发者必备】Spring Boot 2.7.x:WebMvcConfigurer配置手册来了(四)!

关注我的公众号:【编程朝花夕拾】,可获取首发内容。

01 引言

上一期我们介绍了addInterceptorsaddResourceHandlers,分别来注册拦截器以及处理静态资源。我们继续WebMvcConfigurer配置的分享,这一期了解三个方法:

  • addCorsMappings
  • addViewControllers
  • configureViewResolvers

02 方法8

addCorsMappings

java 复制代码
default void addCorsMappings(CorsRegistry registry) {
}

作用:配置全局 CORS(跨域资源共享)规则。

使用场景

  • 前后端分离项目
  • 微服务间的跨域调用

2.1 使用说明

一般出现在前后端分离的项目中,浏览器基于同源策略的安全考虑可能会出现跨域问题。使用的方法也很简单,只需要配置那些路径允许跨域即可。

详细的跨域设置需要在org.springframework.web.servlet.config.annotation.CorsRegistration里面设置。

2.2 跨域重现

手搓一个页面,模拟前后端分离。

跨域重现:

2.3 配置

java 复制代码
@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
            .allowCredentials(true)
            .allowedOriginPatterns("*")
            .allowedMethods("GET", "POST", "PUT", "DELETE")
            .maxAge(3600)
            .allowedHeaders("*");
}

当然跨域也可能通过@CrossOriginCorsFilter或者nginx等解决跨域问题。

2.4 问题解决

03 方法9

addViewControllers

java 复制代码
default void addViewControllers(ViewControllerRegistry registry) {
}

作用:简化页面跳转配置,无需编写控制器。

使用场景

  • 简单的页面重定向
  • 静态页面映射
  • 默认首页设置

3.1 使用说明

用来注册路径和视图的映射关系,并且不用编写具体的控制层。

3.2 配置

java 复制代码
 @Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/test").setViewName("test");
    registry.addRedirectViewController("/test2", "/test");
    registry.addStatusController("/test3", HttpStatus.ACCEPTED);
}

addViewController:配置视图解析

addRedirectViewController:配置请求重定向

addStatusController:配置请求的返回状态码

04 方法10

configureViewResolvers

java 复制代码
default void configureViewResolvers(ViewResolverRegistry registry) {
}

作用:视图解析器,决定如何将控制器返回的逻辑视图名解析为实际的视图对象。

使用场景

  • 页面的的跳转
  • 多视图混用

4.1 使用说明

视图解析器可以配置多种,默认了几种常用的视图解析:

  • jsp
  • Freemarker
  • groovy
  • tiles

4.2 配置

视图解析器的混用,在之前的文章中专门讲过。可以通过properties文件完全实现。

05 小结

本节的分享都是非常常用的配置,在开发中可能会通过其他方式实现。了解会发现,其实很多配置可能已帮我们节省很多代码。

相关推荐
Sam_Deep_Thinking6 分钟前
聊聊开闭原则,以及它在Spring里的样子
java·后端·spring·程序员·开闭原则
IT_陈寒17 分钟前
Redis的Lua脚本居然把我的集群搞崩了!
前端·人工智能·后端
SimonKing19 分钟前
开源神器 Navop:数据库+SSH+终端+AI,一个应用全搞定
java·后端·程序员
爱码猿23 分钟前
SpringBoot+MybatisPlus动态数据源
java·spring boot·后端
小义_24 分钟前
JDK 深度解析
java·linux·开发语言·python·面试
奈斯先生Vector44 分钟前
从“能调用”到“可运营”:AI Agent 进入多模型时代后的架构升级
java·javascript·数据库·人工智能·算法·架构·aigc
Json____1 小时前
宿舍安全卫生检查系统:Node 全栈开发实战
java·前端·数据库·毕业设计·课程设计·毕设·wwwoop.com
阿里嘎多学长1 小时前
2026-08-30 GitHub 热点项目精选
开发语言·程序员·github·代码托管
pnoker1 小时前
36 个驱动模块:应对协议碎片化
java·物联网·modbus·工业互联网·opc ua
码上有光1 小时前
Linux:进程控制和进程替换
java·linux·服务器·进程控制·进程替换