본문 바로가기
개발/문제 해결

OpenFeign에서 Java Record 사용 시 직렬화 실패 문제

by nineteen 2025. 4. 1.
반응형

OpenFeign에서 Java Record 사용 시 직렬화 실패 문제

문제 상황

OpenFeign 클라이언트에서 @SpringQueryMap과 함께 Record를 사용하다가 문제가 발생했습니다:

예시코드)

@FeignClient(...)
public interface NewsClient {
    @GetMapping("/news")
    Response getNews(@SpringQueryMap NewsRequest request);
}

public record NewsRequest(
    int limit,
    Integer offset,
    String keyword
) {}
  • 쿼리 파라미터가 누락되어 서버로 전송됨

원인

OpenFeign GitHub Issue #1927Spring Cloud OpenFeign #629를 통해 원인을 파악했습니다:

  • @SpringQueryMap이 Record 타입과 함께 사용될 때 직렬화에 실패함
  • Record의 접근자 메서드가 getXxx() 형식이 아닌 xxx() 형식이라 값 추출 실패하는 듯 함..?

해결 방법

Record를 일반 클래스로 변경하여 문제를 해결했습니다:

// AS-IS: Record 사용 시 직렬화 실패
public record NewsRequest(
    int limit,
    Integer offset,
    String keyword
) {}

// TO-BE: 일반 클래스로 변경하여 해결
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class NewsRequest {
    private int limit;
    private Integer offset;
    private String keyword;
}

참고 문서