inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

회원 등록 API

안녕하세요 선생님 V2방식에대한 질문

368

woojin126

작성한 질문수 19

2

회원등록 V2 방식을 그대로 사용하고
POSTMAN에서 POST방식으로 BODY안에
CreateMemberRequest 클래스의 필드와 같은값으로 데이터를
전송해봤습니다.
그런데 기본생성자가 없을경우에는
"org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class jpashops.ormonetwocombine.dto.RequestItemDto]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `jpashops.ormonetwocombine.dto.RequestItemDto` 
포스트맨 에러입니다
이런 에러 구문이 나오더군요, 그런데 기본생성자를 CreateMemberRequest에 추가해주고 다시 Postman으로 전송하더니 잘되더군요,
받아온 JSON 데이터를 파싱하는데 기본생성자가 원래 필수인가요~?

JPA spring-boot spring java

답변 1

2

OMG

안녕하세요. woojin126님, 공식 서포터즈 OMG입니다.

Jackson은 Post요청시 Jackson2HttpMessageConverter이 데이터를 처리하는데요, 내부적으로 ObjectMapper를 사용합니다. ObjectMapper는 기본생성자와 getter 혹은 setter 혹은 public field를 보고 property명을 찾습니다. 그래서 기본생성자와 getter만 있어도 prorperty명을 찾아 값을 주입시켜줄 수 있습니다.

그럼 궁금해 하시는 "기본생성자는 왜 필수인가?"에 대해 잘 정리된 글 링크 공유합니다.

@RequestBody에 왜 기본 생성자는 필요하고, Setter는 필요 없을까?

감사합니다.

0

만두

정말 좋은 포스트 공유해주셔서 감사합니다!

@JsonIgnore 이후 Internal Server Error가 발생하지 않습니다.

0

33

2

강의 관련 외 질문입니다.

0

91

2

SpringBoot4 + Hibernate7 모듈 등록 방법 공유

1

113

1

BeanCreationException

0

105

3

Update 후 UpdateMemberResponse 매핑할 때

0

66

1

트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?

0

111

2

페이징 + 검색조건 관련해서 질문드립니다.

0

77

1

Query Dsl Q파일 질문입니다.

0

92

1

루트 쿼리라는것은

0

68

1

메서드를 분리하는 기준

0

76

1

findAllWithMemberDelivery 메서드 질문드립니다.

0

123

3

연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략

0

97

2

fetch join과 영속화와 OSIV의 관계

0

102

2

Distinct 사용 전 결과에 대한 의문

0

125

2

레포지토리 계층에서의 트랜잭션에 대한 의문

0

65

1

영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.

0

83

2

dto 필드 속 엔티티 여부

0

67

1

뷰템플릿 사용 시

0

86

2

Result 클래스 관련 질문

0

59

1

@PostConstruct 프록시 관련 질문드립니다

0

91

1

DTO 대신 Form 사용은 안되나요?

0

142

1

OSIV ON 상태일 때

0

102

1

fetch join VS fetch join 페이징 궁금증

0

192

2

양방향 연관관계 알아보는 법?

0

113

1