在类上添加@EnableWebMvc会导致WebMvcAutoConfiguration中的自动配置全部失效,产生以下问题
1.会去除掉spring默认的资源路径设置,需要手动添加资源路径
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/要映射的URL/**").addResourceLocations("classpath:/你的静态资源目录/");
}
比如设置registry.addResourceHandler("/abc/**").addResourceLocations("classpath:/static/");
则可以去浏览器的 xxx/abc/文件名 地址来访问spring resources/static目录下对应文件名的文件
2.会导致访问任何url都报错,需要添加
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
return viewResolver;
}
如果你还需要使用spring的@Controller注解,通过return的方式定向网页,你可能还需要在上述代码中添加
viewResolver.setPrefix("/static/");
viewResolver.setSuffix(".html");
3.导致springboot返回Date类型的数据为一个数组,需要添加
@Autowired
private StringHttpMessageConverter stringHttpMessageConverter;
@Autowired
private MappingJackson2HttpMessageConverter httpMessageConverter;
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
for (int i = 0; i < converters.size(); i++) {
if (converters.get(i) instanceof StringHttpMessageConverter) {
converters.set(i, stringHttpMessageConverter);
}
if (converters.get(i) instanceof MappingJackson2HttpMessageConverter) {
converters.set(i, httpMessageConverter);
}
}
}
来恢复默认的配置
(3)中的解决办法引自WebMvcConfigurer 与 WebMvcConfigurationSupport避坑指南 - 少说点话 - 博客园
以上内容可能会有错误之处,总结以上内容,仅为将问题汇总,减少时间成本所用