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

本文修正了在SpringBoot 2.1.6环境下集成微信公众号时,自定义拦截器导致的Token验证失败问题。通过调整消息转换器顺序,移除Jackson并使用FastJson,确保了系统的正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文: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();


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值