올해에는 DTO에 @Jacksonized 하나 놓아 드려야겠어요
86
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

단일 필드 @Builder 클래스의 Jackson 역직렬화 이슈와 해결책

이 게시물은 Lombok의 @Builder를 사용한 단일 필드 DTO에서 발생하는 Jackson 역직렬화 오류의 원인과 해결 방법을 설명합니다.

문제 원인

  • Jackson은 단일 파라미터 생성자를 delegate 방식으로 처리하여 객체 형태의 JSON 역직렬화 실패
  • Lombok @Builder는 package-private all-args 생성자를 생성하고, 이 생성자는 Jackson이 기본으로 인식하지 못함

해결 방식

  • @Jacksonized 어노테이션 추가로 빌더 기반 역직렬화 활성화 권장
  • 기존 @NoArgsConstructor + @AllArgsConstructor 조합은 생성자 과다 생성과 빌더 외 객체 생성 허용 문제 존재
  • 직접 @JsonCreator와 @JsonProperty를 사용하는 방법도 가능

결론

  • 단일 필드든 멀티 필드든 모든 @Builder 클래스에 @Jacksonized를 적용해 일관된 역직렬화 지원 및 코드 명확성을 확보
  • 이 원칙을 지키면 예상치 못한 JSON 변환 오류를 예방할 수 있음

연관 게시글