서비스간 통신을 하는 과정에서 생긴 오류
필요한 로직을 다 구현하고 B서비스에서 내보내는 DTO와 같은 필드명으로 A서비스에서 받을 DTO까지 생성했는데

자꾸 이렇게 Type 에러가 발생
심지어 로그도 안 뜨고 그냥 저게 다임 저렇게 무심할 수가 없음;
메세지 읽어보니 데이터를 받는 A서비스 DTO클래스에 대한 오류였음

받아주는 클래스(DTO)에 빈생성자가 없어서 발생했던 것
➡️
@NoArgsConstructor어노테이션을 넣어서 해결

판단 미스로 받는 타입을 ApiUtills.ApiResult<T>로 포장해서 받아보려고 했었음.
해결방법 찾고 바로 DTO로 받을 수 있게 변경
✅ 빈생성자가있고, 필드명만 같다면 DTO로 받아도 문제없음
Feign 클라이언트가 내부적으로 JSON 라이브러리(일반적으로 Jackson)를 사용해 HTTP 응답을 Java 객체로 변환하기 때문
1. Java 객체의 역직렬화
Jackson과 같은 라이브러리는 역직렬화 과정에서 빈 생성자를 사용하여 객체의 인스턴스를 먼저 생성한 후, 반사(Reflection)를 통해 JSON 데이터에서 읽은 값들로 객체의 필드를 설정함
역직렬화(Deserialization): JSON 문자열을 Java 객체로 변환하는 과정
Jackson은 기본적으로 객체를 생성할 때 빈 생성자를 호출
빈 생성자가 없으면 Jackson은 객체의 인스턴스를 생성할 수 없어 역직렬화 과정에서 실패하게 됨
2. Feign과 Jackson