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

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

相关推荐
爱笑的眼睛111 分钟前
从零构建与深度优化:PyTorch训练循环的工程化实践
java·人工智能·python·ai
古城小栈1 分钟前
Spring Boot 4.0 虚拟线程启用配置与性能测试全解析
spring boot·后端·python
松莫莫4 分钟前
Spring Boot 整合 MQTT 全流程详解(Windows 环境)—— 从 Mosquitto 安装到消息收发实战
windows·spring boot·后端·mqtt·学习
小码编匠14 分钟前
WPF 实现高仿 Windows 通知提示框:工业级弹窗设计与实现
后端·c#·.net
狂奔小菜鸡14 分钟前
Day27 | Java集合框架之List接口详解
java·后端·java ee
未秃头的程序猿14 分钟前
《Spring Boot MongoDB革命性升级!silky-mongodb-spring-boot-starter发布,开发效率暴增300%!》
后端·mongodb
a程序小傲15 分钟前
美团二面:KAFKA能保证顺序读顺序写吗?
java·分布式·后端·kafka
墨笔之风15 分钟前
数据库文档生成工具(PostgreSQL 适配版 - Java 8 兼容)
java·数据库·postgresql
a努力。15 分钟前
网易Java面试被问:fail-safe和fail-fast
java·windows·后端·面试·架构
白衣鸽子18 分钟前
【基础数据篇】数据等价裁判:Comparer模式
后端·设计模式