✏️ Feign Client 에서 응답 받을 때 Jackson 역직렬화 이슈 - LIMITED-TEAM25/wiki_repository GitHub Wiki

✔️ 문제 상황

record 기반 클래스에서 필드명이 다른 이슈가 생겨서 Feign Client 응답 파싱이 실패하는 이슈가 생김

public record OrderCreateResponse(
    UUID orderId, // feign client에서는 id 라는 필드명으로 응답하고 있음
    UUID productId,
    Long userId,
    ...
) {}

✔️ 원인

record는 모든 필드가 final이고 생성자를 암시적으로 사용하기때문에, Jackson이 생성자 파라미터 이름을 알 수 없어 매핑 실패함

✔️ 해결 방법

생성자에 @JsonProperty 어노테이션을 달아서 직접 명시를 해주면 됨

public record OrderCreateResponse(

    @JsonProperty("id")
    UUID orderId,
    
    UUID productId,
    
    Long userId,
    ...
) {}

(이때, Jackson 버전이 낮거나, IntelliJ에서 인식이 안되는 경우에는 클래스 또는 record 위에 @JsonCreator 어노테이션을 달아주어야함.)

✨ 결론

Feign Client 시 응답 DTO는 Jackson 설정을 통해 정확하게 맞춰주어야 역직렬화가 가능하다!