大佬教程收集整理的这篇文章主要介绍了升级到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,ObjectMapper
bean能够从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,请注明来意。