2024.01.22
1차 종합 프로젝트
환경 - 스프링부트 3.2.1, 자바 JDK21
@PostMapping("/save")
public String saveListPlace(List<PlaceReqDto> placeReqDtoList) {
RsData<Place> place = placeService.save(placeReqDtoList);
return "domain/place/test"; // TODO 임시로 test.html을 사용 나중에 다른거로 보여줘야 함
}
@PostMapping("/save")
public String saveListPlace(PlaceReqDtoList placeReqDtoList) {
RsData<Place> place = placeService.save(placeReqDtoList);
return "domain/place/test"; // TODO 임시로 test.html을 사용 나중에 다른거로 보여줘야 함
}
해결한 이유 - ChatGPT한테 물어봄
문제 코드는 List<PlaceReqDto>
를 매개변수로 받고 있습니다. 이것은 인터페이스인 List
를 직접 사용하고 있기 때문에 Spring이 해당 인터페이스를 어떻게 인스턴스화해야 하는지 알지 못하고 오류가 발생할 수 있습니다.
해결한 코드는 PlaceReqDtoList
를 매개변수로 받고 있습니다. 여기서 PlaceReqDtoList
는 사용자 정의 클래스로 보입니다. 이 클래스가 생성자나 다른 방법을 통해 List<PlaceReqDto>
를 포함하고 있을 가능성이 높습니다. 따라서 Spring은 해당 클래스를 통해 리스트를 초기화할 수 있으며 오류가 발생하지 않습니다.
💡 정리
에러 메시지인 "No primary or single unique constructor found for interface java.util.List"는
Spring이 리스트를 초기화할 때 사용할 수 있는 생성자를 찾지 못했을 때 나오는 메시지입니다.
해결한 코드에서는 사용자 정의 클래스의 생성자 등을 통해 초기화할 수 있기 때문에 문제가 발생하지 않습니다.