springboot2重写WebMvcConfigurer的configureMessageConverters方法无效的解决方案
主要是因为没有在入口类或者当前配置类上增加@EnableWebMvc注解,完整代码如下:
@EnableWebMvc
@RequiredArgsConstructor
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
private final RequestIntercept requestIntercept;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(requestIntercept).addPathPatterns("/api/**");
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedHeaders("*").allowedMethods("*").allowedOrigins("*");
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
// 1.需要定义一个convert转换消息的对象;
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
// 2:添加fastJson的配置信息;
FastJsonConfig fastJsonConfig = new FastJsonConfig();
// 把值是空的直接过滤掉,去掉循环转换
fastJsonConfig.setSerializerFeatures(
SerializerFeature.DisableCircularReferenceDetect,
SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullListAsEmpty,
SerializerFeature.WriteNullStringAsEmpty,
SerializerFeature.WriteNullBooleanAsFalse
);
// 3处理中文乱码问题
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_ATOM_XML);
fastMediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED);
fastMediaTypes.add(MediaType.APPLICATION_OCTET_STREAM);
fastMediaTypes.add(MediaType.APPLICATION_JSON);
fastMediaTypes.add(MediaType.APPLICATION_PDF);
fastMediaTypes.add(MediaType.APPLICATION_RSS_XML);
fastMediaTypes.add(MediaType.APPLICATION_XHTML_XML);
fastMediaTypes.add(MediaType.APPLICATION_XML);
fastMediaTypes.add(MediaType.IMAGE_GIF);
fastMediaTypes.add(MediaType.IMAGE_JPEG);
fastMediaTypes.add(MediaType.IMAGE_PNG);
fastMediaTypes.add(MediaType.TEXT_EVENT_STREAM);
fastMediaTypes.add(MediaType.TEXT_HTML);
fastMediaTypes.add(MediaType.TEXT_MARKDOWN);
fastMediaTypes.add(MediaType.TEXT_PLAIN);
fastMediaTypes.add(MediaType.TEXT_XML);
// 4.在convert中添加配置信息.
fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
HttpMessageConverter<?> converter = fastJsonHttpMessageConverter;
converters.add(converter);
}
}