全民泡跑超人最新版
1.91GB · 2025-12-03
上一期我们介绍了addInterceptors和addResourceHandlers,分别来注册拦截器以及处理静态资源。我们继续WebMvcConfigurer配置的分享,这一期了解三个方法:
addCorsMappingsaddViewControllersconfigureViewResolversdefault void addCorsMappings(CorsRegistry registry) {
}
作用:配置全局 CORS(跨域资源共享)规则。
使用场景:
一般出现在前后端分离的项目中,浏览器基于同源策略的安全考虑可能会出现跨域问题。使用的方法也很简单,只需要配置那些路径允许跨域即可。
详细的跨域设置需要在org.springframework.web.servlet.config.annotation.CorsRegistration里面设置。
手搓一个页面,模拟前后端分离。
跨域重现:
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowCredentials(true)
.allowedOriginPatterns("*")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.maxAge(3600)
.allowedHeaders("*");
}
当然跨域也可能通过@CrossOrigin、CorsFilter或者nginx等解决跨域问题。
default void addViewControllers(ViewControllerRegistry registry) {
}
作用:简化页面跳转配置,无需编写控制器。
使用场景:
用来注册路径和视图的映射关系,并且不用编写具体的控制层。
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/test").setViewName("test");
registry.addRedirectViewController("/test2", "/test");
registry.addStatusController("/test3", HttpStatus.ACCEPTED);
}
addViewController:配置视图解析
addRedirectViewController:配置请求重定向
addStatusController:配置请求的返回状态码
default void configureViewResolvers(ViewResolverRegistry registry) {
}
作用:视图解析器,决定如何将控制器返回的逻辑视图名解析为实际的视图对象。
使用场景:
视图解析器可以配置多种,默认了几种常用的视图解析:
jspFreemarkergroovytiles视图解析器的混用,在之前的文章中专门讲过。可以通过properties文件完全实现。
本节的分享都是非常常用的配置,在开发中可能会通过其他方式实现。了解会发现,其实很多配置可能已帮我们节省很多代码。