인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

h0ch1님의 프로필 이미지
h0ch1

작성한 질문수

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

요청 매핑 헨들러 어뎁터 구조

강의 전반에 대해 잘 이해한것이 맞는지 여쭙니다

작성

·

31

·

수정됨

0

요청 시에 쿼리 파라미터가 아닌 HTTP body를 받게되면

Dispatcher Servlet 에서 Argument Resovler를 통해 해당 파라미터에 대응되는 HTTP Message Converter를 찾아 객체를 생성하여 Controller로 넘긴다.

 

응답 시에

해당 응답이 ResponseBody일 경우

RetunValueHandler에서 해당 응답의 클래스 타입과 Accept 미디어 타입을 대조하여 HTTP Message Converter를 찾아 응답 결과를 Body에 작성

 

해당 응답이 View를 반환할 경우

ViewResolver가 동작하여 HTML을 작성하여 반환

 

하는것으로 이해하면 될까요?

그리고 ArgumentResolver와 ReturnValueHandler는 둘다 Adapter 패턴을 사용하여 맞는 HTTP Message Converter를 사용하는것인가요?

 

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

h0ch1님이 잘 이해하고 계신 부분들과 추가적인 설명을 통해 더 명확하게 설명해드리겠습니다.

DispatcherServlet과 ArgumentResolver

  • DispatcherServlet은 HTTP 요청을 처리하는 중심에서 다양한 요청에 맞는 Handler(컨트롤러 메서드)를 호출합니다.
  • ArgumentResolver는 요청 데이터를 컨트롤러 메소드의 파라미터로 변환하는 역할을 맡습니다. @RequestBody와 같은 어노테이션이 있을 경우, 적절한 HTTP Message Converter를 사용하여 요청 본문을 Java 객체로 변환합니다.

ReturnValueHandler의 역할

  • RetunValueHandler는 컨트롤러가 반환하는 값을 처리하는 역할을 합니다.
    • 반환 타입이 @ResponseBody인 경우, 적절한 HTTP Message Converter를 사용하여 Java 객체를 HTTP 응답 본문으로 변환합니다.
    • 반환 타입이 View인 경우, ViewResolver를 사용하여 해당하는 페이지를 렌더링해 클라이언트에게 반환합니다.

Adapter 패턴 사용 여부

  • ArgumentResolverReturnValueHandler 모두 특정 상황에 맞춰 적절한 메커니즘을 찾아 연결하는 역할을 하며, 이러한 과정에서 Adapter 패턴의 개념이 자연스럽게 적용됩니다. 즉, 클라이언트 코드가 구체적인 클래스의 변경에 영향을 받지 않도록 하여 유연하고 확장 가능한 설계를 제공합니다.

아래는 추가적으로 도움이 될 수 있는 질문 게시판의 유사한 Q&A입니다:
- 어뎁터에서 핸들러 처리 하는 과정에서 제가 잘 이해한것인지 모르겠습니다
- ReturnValueHandler와 Http 메세지 컨버터 관련해 질문있어요
- 적절한 메시지 컨버터 선택하는건 어디에서 이뤄지나요?

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

h0ch1님의 프로필 이미지
h0ch1

작성한 질문수

질문하기