앞부분 생략
no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
jackson library
가 빈 생성자(기본 생성자)가 없는 모델을 생성하는 방법을 몰라서 발생하는 에러이다.
JSON 데이터를 Java Object로 변환하기 위해서 빈 생성자가 필요하다.
에러메시지에서 에러가 발생하는 부분인 PostProductReq
에 빈 생성자를 추가해주면 문제는 해결된다.
@NoArgsConstructor
어노테이션 추가protected PostProductReq(){}
@RequestBody
로 넘어오는 객체에는 기본 생성자가 필요하다.Jackson2HttpMessageConverter
이다.@RequestBody
로 JSON 데이터가 넘어오면 Java Object 변환은 Jackson2HttpMessageConverter
에서 해준다.Jackson2HttpMessageConverter
의 ObjectMaper를 사용해서 Object로 전환해준다.Jackson2HttpMessageConverter
가 아니라 WebDataBinder
를 사용한다.Preference > Build, Execution, Deployment > Gradle
여기서 Build and run에 Intellij로 되어있다면 아래의 사진처럼 Gradle
로 변경한다.
이전의 Gradle 설정이 IDE에 적용되었는데, 변경후에도 이전의 설정대로 실행되어 에러가 고쳐지지 않는다.
IntelliJ IDEA는 Gradle을 기본 실행기로 한다. 결과적으로 CI (Continuous Integration) 서버에서 동일한 테스트 결과를 얻기에 IntelliJ IDEA는 Gradle을 기본 실행기로 한다. Gradle로 기본실행하면 느리기에 Intellij 실행기로 변경하지만 내 PC에선 잘 되지만 배포하니 안된다 등의 이슈가 발생할 수 있다.