HttpMessageNotReadableException 해결하기


로깅 기능 개발

로깅 기능 개발 과정을 포스팅한 적이 있다.
로그를 남기기 위해 request를 읽어야 했는데
ContentCachingRequestWrapper, ContentCachingResponseWrapper를 사용해서 읽었을까?

request를 getInputStream()이나 getReader()로 두번 읽으면 다음과 같은 exception이 발생한다.

[org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing


코드를 보면 getInputStream()이나 getReader()는 두 번 읽어서 처리할 수 없게 되어 있다.

스프링의 유틸 클래스인 ContentCachingRequestWrapper 를 사용한 이유이다.
ContentCachingRequestWrapper는 입력 스트림 과 리더 에서 읽은 모든 내용을 캐싱한다.


참고