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

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

相关推荐
HONG````13 分钟前
HarmonyOS ArkUI Image 组件完全指南:objectFit、占位图与加载回调
后端
万亿少女的梦16815 分钟前
基于Spring Boot与MySQL的乡镇群众服务系统设计与实现
java·spring boot·mysql·权限管理·前后端分离
Sam_Deep_Thinking23 分钟前
DDD里的领域服务,到底什么时候该用?
程序员·架构·系统架构·ddd
thefool11226627 分钟前
Java 面向对象
java
2501_9481069129 分钟前
计算机毕业设计之jsp-智慧旅游分享平台
java·开发语言·spark·汽车·课程设计·旅游
阿里云云原生1 小时前
Agent 不再是“玩具”!AgentScope Java 2.0 GA 发布:构建企业级分布式智能体底座
java·开发语言·分布式·agentscope
4154111 小时前
MyBatis-Plus + PostGIS 实战(四):GeoJSON 序列化与前端地图对接,全局 WKT + 局部 GeoJSON,两种格式优雅共存
java·mybatis·postgis·geojson
峥嵘life1 小时前
Andorid 打开热点,关闭有线网,ifconfig卡死分析解决
java·服务器·网络
HillVue1 小时前
Token 叙事退潮,DAA 重新定义 AI 价值标准
java·人工智能·eclipse
行者全栈架构师1 小时前
【码动四季】Spring Boot 可观测性体系:Micrometer + OpenTelemetry + Grafana 全链路搭建
java·算法·架构