本来项目正常的访问,当添加配置类WebMvcConfig配置类继承WebMvcConfigurationSupport导致静态资源无法访问,静态页面报404错误,
在这里插入图片描述
原因:继承WebMvcConfigurationSupport会发现Spring Boot的WebMvc自动配置失效(WebMvcAutoConfiguration自动化配置),导致无法视图解析器无法解析并返回到对应的视图,因此需要重新配置静态资源访问路径,在配置类添加如下代码:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**")
            .addResourceLocations("classpath:/resources/")
            .addResourceLocations("classpath:/static/")
            .addResourceLocations("classpath:/public/");
    super.addResourceHandlers(registry);
}

也可采用返回WebMvcConfigurer的配置类方法(建议使用),相比来说这个方法更安全些,因为里边都是待实现的空方法。

@Configuration(
        proxyBeanMethods = false
)
@Slf4j
public class WebConfig {

    @Bean
    public WebMvcConfigurer webMvcConfigurer(){
        return new WebMvcConfigurer() {
            @Override
            public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
                log.info("扩展消息转换器...");
                //创建消息转换器对象
                MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
                //设置对象转换器,底层使用Jackson将Java对象转为json
                messageConverter.setObjectMapper(new JacksonObjectMapper());
                //将上面的消息转换器对象追加到mvc框架的转换器集合中
                converters.add(0,messageConverter);
            }
        };
    }
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐