记一次 SpringBoot2.x 配置 Fastjson 的坑--修正版

原文:https://my.oschina.net/btboys/blog/3055803

实验环境:springboot2.1.6

读者先阅读原文,然后再看本文修正,切记。

作者解释的很到位,关键点也找到了,但没能真正解决问题,如按作者原文做法,系统集成微信公众号,在token验证时一定报错,现给出修正版答案,解决token验证失败情况。

注意:如果系统自定义SpringMVC的拦截器,不能使用启动类继承WebMvcConfigurationSupport这种方法,而是在拦截器中实现类似的方法才行,不然拦截器失效。

@Override
protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
/*
* 追加默认转换器,将jackson转换器删除,并在最后添加fastjson转换器
* 转换器使用顺序是集合顺序,所以fastjson加载到最后,而之前jackson也是在最后,将fastjson放置在最后是正确的
*/
super.addDefaultHttpMessageConverters(converters); // 启动类继承方式保留这行,如果是拦截器方式,需删除这行
for (Iterator<HttpMessageConverter<?>> iterator = converters.iterator(); iterator.hasNext(); ) {
HttpMessageConverter<?> next = iterator.next();
if (next instanceof MappingJackson2HttpMessageConverter) {
iterator.remove();
}
}
//1、定义一个convert转换消息的对象
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2、添加fastjson的配置信息
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//3、在convert中添加配置信息
fastConverter.setFastJsonConfig(fastJsonConfig);
//4、将convert添加到converters中
converters.add(fastConverter);
}
// 获取系统所有的转换器
List<HttpMessageConverter<?>> messageConverters = super.getMessageConverters();
————————————————
版权声明:本文为CSDN博主「NobodyYeah」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/NobodyYeah/article/details/99814525

posted @ 2021-07-29 15:30  疯子110  阅读(246)  评论(0编辑  收藏  举报