반응형
SpringBoot로 백엔드를 구현하고 테스트 중에 아래와 같은 에러가 발생하는 경우가 있다.
cannot deserialize from object value (no delegate- or property-based creator)
API 요청 시 Request Body의 JSON 데이터를 DTO(Java Object)로 변환을 해주는 이때 DTO의 기본 생성자를 찾을 수 없어서 나는 에러이다.
일반적으로 Java 클래스를 생성하면 기본 생성자는 아무런 설정없이 사용할 수 있다.
public class UserDto{
private String userId;
....
}
....
UserDto userDto = new UserDto(); // 기본생성자 사용
하지만 가끔 Lombok을 활용하여 아래와 같은 어노테이션들만 적용이 되면 기본생성자를 사용할 수 없어 'cannot deserialize from Object' 에러가 발생할 수 있다.
@AllArgsConstructor
@RequiredArgsConstructor
public class UserDto{
private String userId;
....
}
이럴 경우 기본생성자도 함께 사용 가능하도록 '@NoArgsConstructor' 어노테이션도 함께 작성해준다.
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class UserDto{
private String userId;
....
}
각 어노테이션의 의미는 아래와 같다.
- @AllArgsConstructor( 모든 필드 값을 파라메타로 받는 생성자를 생성)
- @RequiredArgsConstructor (final이나 @NonNull인 필드 값만 파라메타로 받는 생성자 생성)
- @NoArgsConstructor (파라메타가 없는 기본 생성자 생성)
반응형
'개발 > SpringBoot' 카테고리의 다른 글
SpringBoot AWS S3 파일 업로드 (0) | 2023.06.04 |
---|---|
SpringBoot OpenFeign(FeignClient) 사용하기 (1) | 2023.05.31 |
Kafka 구성 및 SpringBoot 연동 (0) | 2023.03.13 |
SpringBoot3 - GraalVM Native Image Support (0) | 2023.02.01 |
SpringBoot RabbitMQ 활용(Simple Queue, Pub/Sub) (0) | 2022.12.23 |
댓글