Spring Boot 3 原生镜像与 Jackson

Beh*_*rad 5 jackson spring-boot spring-native

我正在尝试使用最新的 SpringBoot 3 设置一个新应用程序,一切正常,直到我尝试使用本机编译创建和运行我的应用程序。仅供您参考,这是我在运行单元测试时收到的错误:

     Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `*****`: cannot deserialize from Object value (no delegate- or property-based Creator): this appears to be a native image, in which case you may need to configure reflection for the class that is to be deserialized
 at [Source: (String)"[{"T":"success","msg":"authenticated"}]"; line: 1, column: 3] (through reference chain: java.util.ArrayList[0])
       com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1909)
       com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:408)
       com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1349)
       com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1417)
       com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:352)
Run Code Online (Sandbox Code Playgroud)

我正在尝试将 JSON 字符串转换为对象。当我将其作为常规 JAR 运行时它工作正常,但当我使用 Navite (GraalVM) 编译时它会失败。

小智 5

在 Spring Native 中,Jackson 不知道如何在没有事先了解对象的情况下序列化/反序列化对象,因为它必须在编译时知道所有类型。
要在本机模式下运行您的应用程序,您需要注册有关所需代理、反射方法、其他资源文件/路径或要序列化/反序列化的对象的提示。
为此,请实现 RuntimeHintsRegistrar 接口。你可以在文档中看到一个例子