You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

注册OAuth2ClientJackson2Module后仍无法构造OAuth2AccessToken实例求助

解决OAuth2AccessToken反序列化失败问题

问题分析

你遇到的错误核心原因是:OAuth2AccessToken没有默认构造函数,常规Jackson反序列化逻辑无法处理;而你注册的OAuth2ClientJackson2Module仅负责OAuth2客户端相关类(如OAuth2AuthorizedClient)的序列化/反序列化,不包含核心类OAuth2AccessToken的处理逻辑,因此无法解决该类的反序列化问题。

解决方案

需要注册Spring Security OAuth2核心模块对应的Jackson扩展:OAuth2CoreJackson2Module。如果你的服务同时承担OAuth2客户端和授权服务器角色,可以同时注册核心模块与客户端模块。

修正后的配置代码

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.security.oauth2.client.jackson2.OAuth2ClientJackson2Module;
import org.springframework.security.oauth2.core.jackson2.OAuth2CoreJackson2Module;

@Configuration
public class JacksonConfiguration {

    @Bean
    public MappingJackson2HttpMessageConverter customMappingJackson2HttpMessageConverter() {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
        // 同时注册核心模块和客户端模块
        builder.modules(new OAuth2CoreJackson2Module(), new OAuth2ClientJackson2Module());
        return new MappingJackson2HttpMessageConverter(builder.build());
    }
}

Spring Boot环境推荐配置方式

如果是Spring Boot项目,更推荐通过Jackson2ObjectMapperBuilderCustomizer添加模块,这样能更好地适配Spring自动配置体系,避免自定义MappingJackson2HttpMessageConverter可能引发的优先级问题:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.security.oauth2.client.jackson2.OAuth2ClientJackson2Module;
import org.springframework.security.oauth2.core.jackson2.OAuth2CoreJackson2Module;

@Configuration
public class JacksonConfiguration {

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer oauth2JacksonCustomizer() {
        return builder -> {
            builder.modules(new OAuth2CoreJackson2Module(), new OAuth2ClientJackson2Module());
        };
    }
}

关键说明

  • OAuth2CoreJackson2Module提供了OAuth2AccessToken、OAuth2TokenType等核心OAuth2类的自定义序列化/反序列化器,专门解决这类无默认构造函数类的序列化问题。
  • 若仅需处理OAuth2AccessToken,单独注册OAuth2CoreJackson2Module即可;若同时需要处理客户端相关类,再补充注册OAuth2ClientJackson2Module。

内容的提问来源于stack exchange,提问作者BigMouse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 00:42:38