본문 바로가기

Trouble Shootings

자바 Failed to instantiate [java.util.List]: Specified class is an interface 에러

자바 스프링기반으로 웹서비스를 개발하던 중, 다음과 같은 에러가 발생했다.

 

@PostMapping("/mypath")
public ResultView<String> myPostMethod(List<String> myList) {
	return new ResultView<String>(myService.doSomething(myList));
}

 

org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Specified class is an interface

위에 보이는 /mypath API를 호출하면, List가 인터페이스 이기 때문에 이를 초기화 할수 없다는 에러가 발생한다. 에러 문구만 보고 List를  ArrayList로 변경해주면, 에러는 발생하지 않지만 API 요청의 Body에 있는 데이터가 myList로 제대로 들어가지 않는다.

 

 

@PostMapping("/mypath")
public ResultView<String> myPostMethod(@RequestBody List<String> myList) {
	return new ResultView<String>(myService.doSomething(myList));
}

근본적으로 API 요청의 Body 값을 제대로 받을 수 있도록, 매개변수 앞에 @RequestBody 어노테이션을 붙여줘야한다. 그래야 에러도 발생하지 않고 요청값도 의도대로 활용할 수 있다.

728x90