Cannot construct instance of com.example.firstproject.dto.ArticleForm
(no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
홍팍님의 강의를 듣다가 그대로 실행했는데 예기치 못한 오류가 났다. 19강에서 분명 똑같이 했는데 HTTP통신 중 POST메서드에서만 오류가 발생하는 것이다.
실행하면 위와 같은 에러가 발생하게 된다.
에러의 내용은 "기본 생성자의 오류"로 생성자가 없다는 것이다.
환경설정의 오류인지 검색해보며 설정도 변경해보고 메서드도 변경해보고 많은 (삽질..) 일들을 했지만 원인은 간단했다.
생성자를 만드는 어노테이션만 있고, 입력 값을 가져오는 어노테이션 또는 메서드가 존재하지 않았던 것이다.
POST는 BODY로 값을 보내기 때문에 백엔드에서 값을 받아서 가져가야하는데 GET 메서드는 값을 받지 않고 출력만 해주기 때문에 POST메서드에서 오류가 났던 것이다.
@Setter와 @NoArgsConstructor 어노테이션을 추가해주면 해결된다.
어노테이션에 대한 지식 부족으로 생겼으니 어노테이션을 몇가지 알아보자.
@AllArgsConstructor
해당 클래스에 있는 모든 변수들을 인수로 받는 생성자를 만든다.
@NoArgsConstructor
인수가 없는 생성자를 생성해준다. (즉, 디폴트 생성자를 추가해준다고 생각하면 된다.)
"Just do it!!"
처음 작성해보는데 잘 쓰고 싶다보니 미뤄진 것들이 많았다.
이번에 Spring boot를 공부하며 바로 작성해야겠다는 생각이 들어서 처음 발견한 오류로 작성해보았다.
일목요연하게 작성해보고 싶었는데 세세하게 작성하다보면 강의정리, 개념정리가 되고 부담감에 멈추게 될 것 같아서 당장 필요한 내용 위주로 작성했다.
기록하면서 나도 공부가 되고, 다른 사람에게는 도움이 될 수 있길! :)