Summary
Investigate restoring Lombok @Jacksonized support now that Jackson 3 has moved @JsonDeserialize to tools.jackson.databind.annotation.
Context
During #14 implementation, we discovered that Lombok's @Jacksonized annotation generates @com.fasterxml.jackson.databind.annotation.JsonDeserialize, which is the Jackson 2 package. Jackson 3 moved this to tools.jackson.databind.annotation, so @Jacksonized has no effect.
As a workaround, all DTOs use explicit @JsonCreator constructors. This works but adds boilerplate, especially for classes with many fields (e.g., Address with 15 parameters).
Options
- Wait for Lombok update — future Lombok versions may add Jackson 3 support for
@Jacksonized
- Custom annotation processor — generate the correct
@JsonDeserialize annotations
- Keep
@JsonCreator — accept the boilerplate as the cost of Jackson 3 migration
Action
Monitor Lombok releases for Jackson 3 compatibility. If a newer Lombok version supports it, refactor DTOs to use @Jacksonized and remove explicit constructors where validation is not needed.
Summary
Investigate restoring Lombok
@Jacksonizedsupport now that Jackson 3 has moved@JsonDeserializetotools.jackson.databind.annotation.Context
During #14 implementation, we discovered that Lombok's
@Jacksonizedannotation generates@com.fasterxml.jackson.databind.annotation.JsonDeserialize, which is the Jackson 2 package. Jackson 3 moved this totools.jackson.databind.annotation, so@Jacksonizedhas no effect.As a workaround, all DTOs use explicit
@JsonCreatorconstructors. This works but adds boilerplate, especially for classes with many fields (e.g.,Addresswith 15 parameters).Options
@Jacksonized@JsonDeserializeannotations@JsonCreator— accept the boilerplate as the cost of Jackson 3 migrationAction
Monitor Lombok releases for Jackson 3 compatibility. If a newer Lombok version supports it, refactor DTOs to use
@Jacksonizedand remove explicit constructors where validation is not needed.