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

SpringBootTest指定classes时DataClass反序列化失败问题

问题解决:Jackson反序列化Kotlin数据类失败(无构造器支持)

错误原因

你指定@SpringBootTest(classes = ...)时,未包含自定义的JacksonConfiguration类。这个配置类负责给ObjectMapper注册Jackson Kotlin模块——Kotlin数据类的构造器逻辑和Java类不同,必须依赖该模块才能让Jackson识别并调用其构造器,完成反序列化。

不指定classes时,Spring会自动扫描加载所有配置类,包括JacksonConfiguration,所以ObjectMapper能正常工作;但手动指定classes后,仅加载了你列出的类,导致ObjectMapper缺少Kotlin模块,无法解析Frame数据类。

解决方案

修改测试类的@SpringBootTest注解,将JacksonConfiguration::class加入classes数组:

@ActiveProfiles("integration-test")
@SpringBootTest(
    classes = [
        AnimationRepository::class,
        TestDataSourceConfiguration::class,
        JacksonConfiguration::class, // 新增该配置类
    ]
)
class AnimationRepositoryTest {
    // 原有代码保持不变
}

这样Spring会加载你的自定义Jackson配置,生成的ObjectMapper会正确注册Kotlin模块,即可正常反序列化List<Frame>对象。

额外验证(可选)

确保项目依赖中包含jackson-module-kotlin:

  • Gradle:
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
  • Maven:
<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-kotlin</artifactId>
</dependency>

由于你在完整上下文环境下能正常运行,说明依赖已存在,此步仅作确认。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:43:14