Lombok v1.6.20 does not work with Jackson

When using the constructor generated by the new Lombok v1.6.20, Jackson cannot use the constructor.

For example, when deserializing

@Data @AllArgsConstructor private static class TestObject { private Integer a; private String b; } 

I get

  com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of TestObject: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?) at [Source: {"a":0,"b":"0"}; line: 1, column: 2] at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:270) at com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:1456) at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1012) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1206) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:314) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:148) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3814) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2858) 

He works in Lombok 1.6.18. A problem may occur when porting to Spring Boot 2.

+5
source share
1 answer

The reason is an incompatible change in Lombok 1.6.20. See Lombok changelog https://projectlombok.org/changelog and this bug report https://github.com/rzwitserloot/lombok/issues/1563 for more details

The solution is to specify the lombok.anyConstructor.addConstructorProperties configuration parameter.

+4
source

Source: https://habr.com/ru/post/1275316/


All Articles