게시글을 생성하는 api를 만들고 postman을 실행했더니, 아래와 같은 오류가 발생했었다.

인텔리제이에 명시된 오류는 다음과 같았다.
23:54:34.686 ERROR [File:DirectJDKLog.java] [Func:log] [Line:175] [Message:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.example.demo.src.post.model.PostPostsReq]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.example.demo.src.post.model.PostPostsReq` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (PushbackInputStream); line: 2, column: 5]] with root cause]- Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.example.demo.src.post.model.PostPostsReq]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.example.demo.src.post.model.PostPostsReq` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (PushbackInputStream); line: 2, column: 5]] with root cause
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.example.demo.src.post.model.PostPostsReq` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (PushbackInputStream); line: 2, column: 5]
혹시나 코드에 작은 오타가 있나 열심히 찾아봤지만 없었다.. 열심히 구글링한 끝에 빈 생성자를 추가해보라는 글을 발견하였고, 나는 빈생성자 대신 아래와 같이 @NoArgsConstructor를 추가해줬더니 정상적으로 api가 실행되었다.
📌 참고
✏️ 해결
파라미터가 없는 생성자를 생성해주는 @NoArgsConstructor를 추가해줬다.


erialize(직렬화) - 객체의 상태를 바이트 스트림으로 변환하는 작업
deserialize(역직렬화) - 직렬화된 파일 등을 역으로 직렬화하여 다시 객체의 형태로 만드는 것을 의미한다. 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원한다.
참고한 글을 보면 기본 생성자가 없어서 역직렬화가 실패한 것이라고 나온다.
위 오류는 Jackson 라이브러리가 빈 생성자가 없는 모델을 생성하는 방법을 모르기 때문에 발생한 것이다.
JSON으로 처리하기 위한 Jackson 라이브러리를 사용하기 위해선 @NoArgsConstructor, 즉 Argument가 없는 Constructor를 만들어주어야 정상적으로 사용할 수 있다고 한다!
라이브러리 특성때문에 발생한 오류라고 생각하면 좋을 것 같다.
'Server > Spring boot' 카테고리의 다른 글
[Swagger 3] Swagger2에서 달라진 것들 (0) | 2022.11.11 |
---|---|
인텔리제이로 스프링 부트 시작하기 (0) | 2022.08.29 |
[스프링] 인프런 스프링 입문 #회원 관리 예제 - 웹 MVC 개발 (0) | 2022.01.30 |
[스프링] 인프런 스프링 입문 #스프링 빈과 의존관계 (0) | 2022.01.30 |
[스프링] 인프런 스프링 입문 #회원 관리 예제 - 백엔드 개발 #2 (0) | 2022.01.19 |
게시글을 생성하는 api를 만들고 postman을 실행했더니, 아래와 같은 오류가 발생했었다.

인텔리제이에 명시된 오류는 다음과 같았다.
23:54:34.686 ERROR [File:DirectJDKLog.java] [Func:log] [Line:175] [Message:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.example.demo.src.post.model.PostPostsReq]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.example.demo.src.post.model.PostPostsReq` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (PushbackInputStream); line: 2, column: 5]] with root cause]- Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.example.demo.src.post.model.PostPostsReq]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.example.demo.src.post.model.PostPostsReq` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (PushbackInputStream); line: 2, column: 5]] with root cause
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.example.demo.src.post.model.PostPostsReq` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (PushbackInputStream); line: 2, column: 5]
혹시나 코드에 작은 오타가 있나 열심히 찾아봤지만 없었다.. 열심히 구글링한 끝에 빈 생성자를 추가해보라는 글을 발견하였고, 나는 빈생성자 대신 아래와 같이 @NoArgsConstructor를 추가해줬더니 정상적으로 api가 실행되었다.
📌 참고
✏️ 해결
파라미터가 없는 생성자를 생성해주는 @NoArgsConstructor를 추가해줬다.


erialize(직렬화) - 객체의 상태를 바이트 스트림으로 변환하는 작업
deserialize(역직렬화) - 직렬화된 파일 등을 역으로 직렬화하여 다시 객체의 형태로 만드는 것을 의미한다. 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원한다.
참고한 글을 보면 기본 생성자가 없어서 역직렬화가 실패한 것이라고 나온다.
위 오류는 Jackson 라이브러리가 빈 생성자가 없는 모델을 생성하는 방법을 모르기 때문에 발생한 것이다.
JSON으로 처리하기 위한 Jackson 라이브러리를 사용하기 위해선 @NoArgsConstructor, 즉 Argument가 없는 Constructor를 만들어주어야 정상적으로 사용할 수 있다고 한다!
라이브러리 특성때문에 발생한 오류라고 생각하면 좋을 것 같다.
'Server > Spring boot' 카테고리의 다른 글
[Swagger 3] Swagger2에서 달라진 것들 (0) | 2022.11.11 |
---|---|
인텔리제이로 스프링 부트 시작하기 (0) | 2022.08.29 |
[스프링] 인프런 스프링 입문 #회원 관리 예제 - 웹 MVC 개발 (0) | 2022.01.30 |
[스프링] 인프런 스프링 입문 #스프링 빈과 의존관계 (0) | 2022.01.30 |
[스프링] 인프런 스프링 입문 #회원 관리 예제 - 백엔드 개발 #2 (0) | 2022.01.19 |