본문 바로가기
seok2

직렬화,역직렬화의 기본 생성자 필요

by shulk 2023. 12. 2.

댓글 생성 컨트롤러 테스트 하던중 이런 오류가 뜨고 오류 내용들 알아보니 직렬화- 역직렬화랑 관련이 있는 문제였다.

해석해보니 "HTTP 요청으로부터 전달된 JSON 데이터를 스프링이 해당하는 Java 객체로 변환하려고 시도할 때 발생"

 

"Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `cohttp://m.todoapp.todoapp.dto.comment.CommentRequestDto` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)]"

 

 

 

CommentRequestDto에는 모든 필드 설정 생성자 @AllArgsConsturctor만 있어서 위에 테스트 코드의  ↓ 이부분에서 기본 매개변수 없은 생성자가 필요한데 없어서 꼬이거나

String dtoJson = objectMapper.writeValueAsString(requestDto);

GPT에 물어보니 "Spring MVC는 Request body를 해당 DTO로 매핑하는 과정에서 문제가 발생할 수 있다" 나왔는데

mvc.perform()의 내부 처리하는 원리는 당연 복잡해서 모르니 지금 상황에서는 일단 

직렬화,역직렬화에 대해 다시 복습하고,DTO에도 기본 생성자  @NoArgsConstructor를 설정해줘야한다!