@RequestBody에 DTO 사용 시 기본 생성자를 못 찾는 에러
Cannot construct instance of '...[DTO 위치]' 에러 발생
에러 내용은 대충 기본 생성자를 못 찾는다는 소리다.
아래가 문제의 DTO
package com.example.demo.dto;
import java.time.LocalDateTime;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
@NoArgsConstructor
@Getter
@ToString
public class MeetingDto {
private String topic;
private int type;
private boolean default_password;
private int duration;
private String password;
private List<MeetingSetting> setting;
private LocalDateTime start_time;
@Builder
public MeetingDto(String topic, int type, boolean default_password, int duration,
String password,
List<MeetingSetting> setting,
LocalDateTime start_time) {
this.topic = topic;
this.type = type;
this.default_password = default_password;
this.duration = duration;
this.password = password;
this.setting = setting;
this.start_time = start_time;
}
}
기본생성자 추가는 롬복 어노테이션 @NoArgsConstructor 을 추가하면 해결된다.
문제는 나는 이미 추가를 했는데도 에러가 난다는 것이다.
아래 @Build를 지우면 에러는 안남.
@AllArgsConstructor를 추가해보기도 했으나 여전히 에러.
하는 수 없이 수기로 기본 생성자를 작생했더니 문제가 해결됐다.
원인을 모르는 상태로 진행하던 중...
롬복의 @Getter 어노테이션을 달았는데도 getter가 생성이 안되어 검색해보니, lombok 의존성 추가 이후에 IDE에 설치도 해줘야 롬복 기능을 사용할 수 있다는 것을 몰라 생긴 문제였다.
그럼 @NoArgsConstructor 도 롬복이 인식 안되어서 작동이 안했나 하고 롬복 설치 후 다시 시도해보니 @NoArgsConstructor 와 @Builder 사용시에 발생하던 에러도 해결됐다...
[롬복 설치 과정]
1. 프로젝트 익스플로러 > Project and External Dependencies > lombok > 우클릭 > Run As > Java Application
2. 아래 경고창 화면은 IDE 위치를 못 찾는다는 내용. [OK] 누르고 수동으로 IDE 파일을 찾아 넣는다
Specify location... > IDE 폴더 위치 선택 > exe 또는 app 파일 선택 > Install / Update
3. 완료된 이후 IDE를 껐다가 다시 키면 잘 적용된다.