2023. 1. 12. 22:07ㆍBACKEND/TROUBLE SHOOTING
문제
@AllArgsConstructor를 사용해 모든 필드를 받는 생성자를 사용했는데도 Postman으로 테스트 시 에러가 남
해결
DTO에 @NoArgsConstructor을 추가
설명
Serialize(직렬화) : 객체의 상태를 바이트 스트림으로 변환
Deserialize(역직렬화) : 바이트 스트림을 객체 형태로 변환
POST 요청에서 에러가 발생했는데, 기본 생성자가 없어서 역직렬화 실패라고 한다. Controller단에서 @RequestBody가 설정되어 Json에서 DTO Object로 변환이 필요한 경우 에러가 발생하는 것 같다. @RestController에서 @RequestBody를 바인딩하기 위해 ObjectMapper를 사용하는데 기본 생성자로 DTO를 생성한다. 그렇기 때문에 @NoArgsConstructor가 있어야 한다.
참고자료
@RequestBody에 왜 기본 생성자는 필요하고, Setter는 필요 없을까? #2 (velog.io)
@RequestBody에 왜 기본 생성자는 필요하고, Setter는 필요 없을까? #2
이전 글에서는 어떻게 @RequestBody를 처리하는지를 알아보기 위한 과정을 설명했습니다. 이번 글에서는 @RequestBody를 바인딩하는 ObjectMapper에 대해 알아보고, 결론을 짓겠습니다. 참고로 아래 사진
velog.io
자바 직렬화, 그것이 알고싶다. 훑어보기편 | 우아한형제들 기술블로그 (woowahan.com)
자바 직렬화, 그것이 알고싶다. 훑어보기편 | 우아한형제들 기술블로그
{{item.name}} 자바의 직렬화 기술에 대한 대한 이야기입니다. 간단한 질문과 답변 형태로 자바 직렬화에 대한 간단한 설명과 직접 프로젝트를 진행하면서 겪은 경험에 대해 이야기해보려 합니다.
techblog.woowahan.com
@Request Body에서는 Setter가 필요없다? (tistory.com)
@Request Body에서는 Setter가 필요없다?
회사에서 근무하던중 새로오신 신입 개발자분이 저에게 하나의 질문을 했습니다. POST 요청시에 Setter가 필요없는것 같다고. 여태 제가 알던것과는 달라서 어떻게 된 일인지 궁금했습니다. 정말 P
jojoldu.tistory.com