springboot版本:2.4.5
java版本:1.8
问题描述:
@Configuration
@Slf4j
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
log.info("跨域配置开始。。。。。");
registry.addMapping("/**")
.allowedOrigins("http://localhost:63342")
.allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
.allowCredentials(true)
.maxAge(3600)
.allowedHeaders("*");
}
}配置了全局跨域处理但未生效。
问题原因:1.在另一个类中配置了静态资源映射,继承了webMvcConfigurationSupport类
而WebMvcConfigurationSupport类会导致webmvc自动配置失效,因为在webmvc自动配置类中有条件注解:

2.如果使用了@EnableWebMvc这个注解也可能会导致其他配置类失效,造成类似的问题。因为@EnableWebMvc导入一个类DelegatingWebMvcConfiguration,而DelegatingWebMvcConfiguration则继承自WebMvcConfigurationSupport,因此会导致webmvc自动配置失效,导致其他配置类无法被识别。
解决方法:1.修改静态资源配置类,实现configurer接口而不是继承webMvcConfigurationSupport类来完成静态资源配置。
2.配置都在继承webMvcConfigurationSupport的这个类中完成。
文章讲述了在SpringBoot2.4.5和Java1.8环境下,配置全局跨域处理未生效的原因,涉及WebMvcConfigurationSupport类的影响以及解决方法,包括避免继承该类并改用Configurer接口进行静态资源配置。
2946

被折叠的 条评论
为什么被折叠?



