인프런 커뮤니티 질문&답변

86andro님의 프로필 이미지
86andro

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

@RequestBody와 ObjectMapper와의 차이를 질문하고 싶습니다.

작성

·

664

0

안녕하세요 강의를 듣고 개발을 시작한 개발자입니다

개발 중에 맞딱뜨린 상황이 궁금하여 질문을 남기고자 합니다.

1. @RequestBody 를 통하여 컨트롤 메소드 파라미터로 전달받음

   >> @RequestBody ClassName object

2.  HttpServletRequest의 getInputStream 을 통하여 ByteArray을 받아서 ObjectMapper 로 클래스 객체 변환

  >> ClassName object = objectMapper.readValue(request.getInputStream(), ClassName.class);

해당 두가지 방법으로 구현하였을 때 첫번째 방법은 정상적으로 객체 생성이 제대로 이루어지는데

두번째 방법은 기본 생성자가 반드시 있어야만 객체 생성이 가능했습니다.

그래서 기본 생성자가 필요하다보니 해당 클래스의 멤버변수에 final을 제거해야만 했었네요

전자는 일반 컨트롤 메서드에서 사용이 가능하지만 후자는 컨트롤뿐만 아니라 필터에서도 활용이 가능하여 사용하였는데

필터에서 제대로 역직렬화가 되지 않아 차이가 무엇인지 질문을 드립니다.

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 86andro님

다음 글을 읽어보시면 도움이 되실 듯 합니다.

https://bbbicb.tistory.com/46

추가로 이글 마지막에 있는 ParameterNamesModule을 스프링 부트는 자동으로 등록해줍니다.

하지만 objectMapper를 직접 등록하면 이 기능이 동작하지 않습니다.

스프링 부트 ObjectMapper로 검색하시면 스프링 부트가 제공하는 ObjectMapper를 조회하는 방법을 찾을 수 있습니다.

감사합니다.

86andro님의 프로필 이미지
86andro
질문자

정말 감사합니다 저 차이가 있었군요..

86andro님의 프로필 이미지
86andro

작성한 질문수

질문하기