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

01 引言
上一期我们介绍了addInterceptors和addResourceHandlers,分别来注册拦截器以及处理静态资源。我们继续WebMvcConfigurer配置的分享,这一期了解三个方法:
addCorsMappingsaddViewControllersconfigureViewResolvers
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("*");
}
当然跨域也可能通过@CrossOrigin、CorsFilter或者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 使用说明

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

视图解析器的混用,在之前的文章中专门讲过。可以通过properties文件完全实现。
05 小结
本节的分享都是非常常用的配置,在开发中可能会通过其他方式实现。了解会发现,其实很多配置可能已帮我们节省很多代码。