회원가입 테스트를 하다 마주한 에러이다.
userName과 password를 보내는 api 호출 테스트를 했지만, 에러가 났다.
첫 번째 에러는
cannot construct instance of `내 패키지 이름` 어쩌구 였다.
Resolved [org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.join.joinerror.domain.dto.UserJoinRequest]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.join.joinerror.domain.dto.UserJoinRequest` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)<EOL> at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 2, column: 3]]
no Creators, like default constructor, exist 이 문장이 눈에 띈다.
그 이유는 ObjectMapper가 내부적으로 Json을 Java로 변환할때 생기는 오류라고 한다.
근데 검색해보니 해결 방법은
<해당 Dto에 @NoArgsConstructor를 붙여주어서 해결>
즉, "기본 생성자만 만들어주면 된다"고 한다.
그래서 RequestDto에 @NoArgsConstructor를 추가 했더니,
이번엔
java.lang.nullpointerexception 에러...
진짜 미치고 환장할 노릇.
구글링을 해보니 java.lang.nullpointerexception 에러는 원인이 다양한 듯했다.
또 미친듯이 구글링...
이쯤되면 나의 스승은 구글인 듯하다.ㅋ
일단 나중에 나온 에러인 java.lang.nullpointerexception 말고,
제일 처음에 나온 cannot construct instance of `...` 이걸 먼저 해결해야 할 것 같았다.
보통 제일 처음에 난 에러를 해결하면 그 뒤에 에러가 줄줄이 해결될 가능성이 높기 때문.
암튼 구글링을 해보니 어노테이션에 문제가 있는 것 같아서 코드를 다시 찬찬히 살펴봤다.
근데...!
Service에 final과 @RequiredArgsConstructor를 안 붙였던 것이다..!
아 이런 실수를 하다니..ㅠ
그래서 Service 파일에 추가했더니
이번엔 다시 java.lang.nullpointerexception 에러가 떴다.
그래서 @NoArgsConstructor를 다시 추가하니
드디어 성공!
api 두 번 호출하니
중복 검사도 성공했다.
- 나의 어이없는 삽질 기록 끝 -
'에러' 카테고리의 다른 글
[예외 처리] isEmpty일 때 Custom Exception 실패 후기 (0) | 2023.01.25 |
---|---|
[에러] 409 에러 (0) | 2023.01.18 |
[에러] 회원 가입 & 로그인 에러 처리에 대한 고찰 (0) | 2023.01.17 |
[SpringBoot 에러] (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) (0) | 2023.01.08 |
git commit 삭제 (0) | 2023.01.04 |