문제 상황

Spring MVC 프로젝트에서 @RequestBody로 JSON 데이터를 받으려 했지만, 다음과 같은 에러가 발생했다:

❌ 415 Unsupported Media Type

기본적으로 Spring Boot에서는 @RequestBody로 JSON 데이터를 받으면 자동으로 객체로 변환되지만, Spring MVC에서는 다음과 같은 이유로 작동하지 않았다.

image.png

image.png

그래서 우리 프로젝트에서는

image.png

이런 식으로 String paramStr로 받은 후, 해당 객체로 convert 시켜주는 번거로운 작업을 수행했다.

Spring Boot에서 당연했던 기능이 Spring MVC에서 안 되는게 굉장히 싫었고, 고치기로 마음 먹었다.

진짜 별의 별 파일을 다 뒤져보았다.

원인 분석

문제는 DispatcherServlet이 요청을 컨트롤러에 전달할 때 사용할 HttpMessageConverter가 등록되어 있지 않아서였다.

그러다 Initializer에서 dispatcher servlet을 초기화하는 부분을 찾게되었다.

image.png

dispatcher-servlet.xml에 들어가보니