반응형
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 #1927과 Spring 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;
}
참고 문서
'개발 > 문제 해결' 카테고리의 다른 글
OpenSearch 페이징 문제 및 해결 (0) | 2025.02.27 |
---|---|
JPA Custom Query Method 사용 시 트랜잭션 이슈 및 해결 (0) | 2025.02.24 |