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

Spring Boot WebMvcConfigurer配置详解

01 引言

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

  • addCorsMappings
  • addViewControllers
  • configureViewResolvers

02 方法8

addCorsMappings

default void addCorsMappings(CorsRegistry registry) {
}

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

使用场景

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

2.1 使用说明

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

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

2.2 跨域重现

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

跨域重现:

2.3 配置

@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

default void addViewControllers(ViewControllerRegistry registry) {
}

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

使用场景

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

3.1 使用说明

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

3.2 配置

 @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

default void configureViewResolvers(ViewResolverRegistry registry) {
}

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

使用场景

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

4.1 使用说明

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

  • jsp
  • Freemarker
  • groovy
  • tiles

4.2 配置

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

05 小结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值