[에러] No primary or single unique constructor found for interface java.util.List

손경이·2024년 1월 23일
0

에러모음

목록 보기
14/20

2024.01.22
1차 종합 프로젝트
환경 - 스프링부트 3.2.1, 자바 JDK21

❗ 에러 문구

  • No primary or single unique constructor found for interface java.util.List
  • 문제 코드
@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이 리스트를 초기화할 때 사용할 수 있는 생성자를 찾지 못했을 때 나오는 메시지입니다.
해결한 코드에서는 사용자 정의 클래스의 생성자 등을 통해 초기화할 수 있기 때문에 문제가 발생하지 않습니다.

0개의 댓글