程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了升级到Spring Boot 2后,没有默认构造函数,ObjectMapper无法反序列化大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决升级到Spring Boot 2后,没有默认构造函数,ObjectMapper无法反序列化?

开发过程中遇到升级到Spring Boot 2后,没有默认构造函数,ObjectMapper无法反序列化的问题如何解决?下面主要结合日常开发的经验,给出你关于升级到Spring Boot 2后,没有默认构造函数,ObjectMapper无法反序列化的解决方法建议,希望对你解决升级到Spring Boot 2后,没有默认构造函数,ObjectMapper无法反序列化有所启发或帮助;

由于Lombok版本1.16.20中的重大更改,您需要在@H_301_1@lombok.config文件中设置以下属性(如果没有此文件,则可以在项目根目录中创建它):

@H_301_1@lombok.anyConstructor.addConstructorPropertIEs=true

在Lombok更改日志中对此进行了描述:https ://projectlombok.org/changelog。

之后,@ Value应该再次被Jackson接受。

您可能会在这里关注相关的GitHub问题,尽管它是关于@H_301_1@@Data:https ://github.com/rzwitserloot/lombok/issues/1563

解决方法

我有以下DTO:

@Value
public class PracticeResults {
    @NotNull
    Map<Long,Boolean> wordAnswers;
}

@Value
public class ProfileMetaDto {

    @NotEmpty
    String name;
    @Email
    String email;
    @Size(min = 5)
    String password;
}

@Value是生成构造函数的Lombok批注。这意味着该类没有no-arg构造函数。

我使用了Spring Boot 1.4.3.RELEASE,ObjectMapperbean能够从JSON反序列化此类对象。

升级到Spring Boot 2.0.0.M7之后,我收到以下异常:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: CAnnot construct instance of PracticeResults (no Creators,like default construct,exist): cAnnot deserialize from Object value (no delegate- or property-based Creator)

Spring Boot 1.4.3中使用的Jackson版本是2.8.10,而Spring Boot
2.0.0.M7中使用的是Jackson版本2.9.2

我尝试使用Google解决此问题,但仅找到带有@JsonCreator或的解决方案@JsonProperty

那么,为什么它不能在Spring Boot 1.4.3上运行而在Spring Boot 2上运行呢?是否可以将bean配置为与旧版本相同?

大佬总结

以上是大佬教程为你收集整理的升级到Spring Boot 2后,没有默认构造函数,ObjectMapper无法反序列化全部内容,希望文章能够帮你解决升级到Spring Boot 2后,没有默认构造函数,ObjectMapper无法反序列化所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。