【开发者必备】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 小结

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

相关推荐
逻辑驱动的ken2 分钟前
Java高频面试考点场景题20
java·开发语言·深度学习·面试·职场和发展
GISer_Jing3 分钟前
AI全栈工程师知识体系全景:从前后端核心架构到落地项目全拆解
前端·人工智能·后端·ai编程
bzmK1DTbd3 分钟前
Java游戏服务器:Netty框架的高并发网络通信
java·服务器·游戏
longxibo5 分钟前
【Flowable 7.2 源码深度解析与实战-前言】
java·后端·流程图
全栈小刘10 分钟前
ChatGPT账号打通OpenClaw?Codex又整了个“电子宠物”,开发者这下真坐不住了
后端
小龙报17 分钟前
【Coze-AI智能体平台】低代码省时高效:Coze 应用开发全流程指南
java·人工智能·python·深度学习·低代码·chatgpt·交互
陈随易22 分钟前
bun将会支持Bun.image,你怎么看?
前端·后端·程序员
念何架构之路30 分钟前
Go Web基础和Http演进
开发语言·后端·golang
勿忘初心122133 分钟前
【Java实战】SpringBoot 集成 freemarker 导出 Word 模板
java·spring boot·freemarker·模板引擎·word导出·后端实战
绿草在线39 分钟前
SpringBoot项目实战:从零搭建高效开发环境
java·spring boot·后端