반응형
문제
Lombok 의 @Data 와 @Builder 가 동시에 선언되어있는 클래스를 Jackson이 Deserialize 를 실패하며..
다음과 같은 에러가 발생한다.
fail to retrieve #{Object} data -
Type definition error: [simple type, class #{package.object}];
nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
Cannot construct instance of #{package.object} (no Creators, like default construct, exist):
cannot deserialize from Object value (no delegate- or property-based Creator)
그결과 데이터가 정상적으로 Mapping 되지 않아 NPE 가 발생하고 있다.
원인
Lombok 1.8.0 이상 버전부터
@Data 와 @Builder 를 동시에 사용할 경우 private 기본 생성자를 생성해주지 않도록 변경되어 발생하는 문제이다.
해결
lombok 1.8.0 이상의 버전에서도.. @Data 와 @Builder 를 함께 사용하더라도
이전 버전들과 마찬가지로 private 기본 생성자를 생성하도록 강제하면된다.
강제하는 방법은.. 다음과 같이 root 경로 아래에 lombok.config 파일을 생성하고
파일에는 다음의 내용을 작성하면 된다.
lombok.noargsconstructor.extraprivate = true
+ Lombok 의 version 별 변경내역은 이곳을 참고하면 된다.
반응형