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的这个类中完成。