Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- BFS
- database
- Java
- 코드트리
- 그래프
- 코테
- 코딩테스트
- 알고리즘
- 싸피
- DP
- JPA
- 완전탐색
- 다시보기
- SSAFY
- 그리디
- SWEA
- Union Find
- DFS
- 유니온파인드
- 완탐
- 트러블슈팅
- 자바
- 부분수열의합2
- 백준
- 알고리즘기본개념
- Spring
- 기본유형
- JUnit
- 코딩테스트실력진단
- 다익스트라
Archives
- Today
- Total
HwangHub
dto 역직렬화에는 기본생성자 + 자바 리플렉션 사용 본문
문제 상황
@Data
@Builder
@AllArgsConstructor
public class CommentLikeCreateRequestDto {
private Long commentId;
}
위와 같이 설정한 채로 commentLike를 수행하는 api를 테스트하던 중 아래와 같은 에러메시지를 만날 수 있었다.
org.springframework.http.converter.HttpMessageNotReadableException:
JSON parse error:
Cannot construct instance of likelion.univ.like.commentlike.dto.CommentLikeCreateRequestDto (although at least one Creator exists):
cannot deserialize from Object value (no delegate- or property-based Creator);
nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException:
Cannot construct instance of likelion.univ.like.commentlike.dto.CommentLikeCreateRequestDto (although at least one Creator exists):
cannot deserialize from Object value (no delegate- or property-based Creator)
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException:
Cannot construct instance of likelion.univ.like.commentlike.dto.CommentLikeCreateRequestDto (although at least one Creator exists):
cannot deserialize from Object value (no delegate- or property-based Creator)
슥 봐도 역직렬화에서 문제가 발생하는 것을 이해할 수 있다.
문제 해결
스프링은 기본적으로 json과 객체 간의 연결을 위해 직렬화와 역직렬화를 지원해주는데, 이를 수행하는 과정에서 내부적으로 기본 생성자를 사용한다고 한다.
더하여, 역직렬화 과정에서는 자바 리플렉션을 활용하여 역직렬화를 수행하기 때문에 접근 제어를 PRIVATE까지 닫아도 된다.
따라서 아래와 같이 수정해 주었다.
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PRIVATE) // edited
public class CommentLikeCreateRequestDto {
private Long commentId;
}
'DEV-STUDY > Spring' 카테고리의 다른 글
[JDBC] batch query를 작성해보며 고민해본 '좋은 코드' (0) | 2023.11.04 |
---|---|
[트러블슈팅/JDBC] Statement.executeQuery() cannot issue statements that do not produce result sets. (0) | 2023.11.04 |
[JPA] @Column(length = value), @Size, @Length 간단요약 (0) | 2023.10.13 |
[Spring] 필드 인젝션을 피해야 하는 이유 (1) | 2023.09.30 |
[Spring] HTTP Method로 알아본 "멱등성"이야기 (0) | 2023.09.28 |
Comments