Inflearn brand logo image

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

yoon6669님의 프로필 이미지
yoon6669

작성한 질문수

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

핸들러 매핑과 핸들러 어댑터

핸들러 매핑, 어댑터 제대로 이해했나요??

작성

·

67

·

수정됨

0

이전에 저희가 구현했을때는 Map에서 그냥 url일치하는 것을 가져오다보니 이해가 쉬웠는데 핸들러 매핑이라는 개념으로 바뀌다 보니 꽤나 헷갈리는 부분이 있어서 질문드립니다. 핸들러 매핑과 어댑터 제가 제대로 이해하고 있는게 맞는지 꼭 확인좀 해주시면 감사하겠습니다.

추측이 좀 있습니다...


먼저 컨트롤러를 찾기 전에 어떤 핸들러 매핑 사용해야하는지 찾고 그 다음 이 핸들러 매핑을 사용해서 알맞은 컨트롤러를 찾는게 맞는다.

이번 강의에선 먼저 우선순위가 높은 RequestMappingHandlerMapping@RequestMapping이 있는지 확인한다. 없으므로 다음 우선순위로 넘어간다. BeanNameUrlHandlerMapping이 컨트롤러들을 확인해서 일치하는 스프링 빈 이름이 있는지 찾는다. 일치하는 스프링 빈이 있으므로 핸들러로 꺼낸다.

 

꺼낸 핸들러를 처리하기 위한 어댑터를 찾는다. 앞서 직접 구현한 V5에서 처럼 어댑터를 하나씩 꺼내어 adapter.supports()하여 알맞은 어댑터 인지 찾는다.RequestMappingHandlerAdapterHttpRequestHandlerAdapter 는 아니므로 넘어가고 SimpleControllerHandlerAdapter이 처리 가능한 어댑터로 반환된다.


여기까지입니다. 제가 특히나 궁금한 것은 핸들러 매핑입니다. 제가 적은 핸들러 매핑 방식은 핸들러 매핑이 먼저 우선순위대로 하나씩 선택되고 선택된 핸들러 매핑이 다시 컨트롤러들을 검사해서 알맞은 컨트롤러를 찾는 식으로 적어놨는데요.

즉, 먼저 RequestMappingHandlerMapping 이 선택되고 @ReqiestMapping인 컨트롤러가 있는지 찾고 없으면 다음 BeanNameUrlHandlerMapping 이 선택되고 매핑 방식인 빈 이름으로 컨트롤러들을 검사해 있으면 반환.

어댑터는 위에 적은 그대로입니다.

이런 식으로 이해했는데 제대로 이해했을까요?

 혹 틀린부분이나 잘못 이해하고 있다면 꼭 지적해주시면 감사하겠습니다.

 

감사합니다...!!

 

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
yoon6669님, 질문 주셔서 감사합니다.

yoon6669님께서 작성하신 핸들러 매핑과 어댑터에 대한 이해는 대부분 맞습니다. 설명해주신 대로 스프링 MVC에서는 여러 종류의 HandlerMappingHandlerAdapter가 존재하고, 이들은 우선순위에 따라 선택됩니다.

  • 핸들러 매핑(Handler Mapping): 요청 URL에 대해 알맞은 컨트롤러를 찾는 과정을 설명하셨습니다. RequestMappingHandlerMapping은 가장 일반적으로 사용되는 매핑 방식으로, @RequestMapping이 있는 컨트롤러를 찾으며, RequestMapping이 없다면 BeanNameUrlHandlerMapping이 사용됩니다. 이 방식은 빈 이름과 URL이 일치하는 컨트롤러를 찾기 위한 것입니다.

  • 어댑터(Adapter): 선택된 핸들러를 처리하기 위해 적절한 HandlerAdapter를 찾는 과정도 정확하게 설명하셨습니다. handler.supports() 메소드를 호출하여 해당 핸들러를 처리할 수 있는 적절한 어댑터 SimpleControllerHandlerAdapter를 찾습니다.

yoon6669님이 설명하신 흐름이 정확하며, 핸들러 매핑과 어댑터의 작동 방식에 대한 이해가 잘 되어 있는 것 같습니다. 추가적으로 궁금한 점이 있으시거나 더 알고 싶은 부분이 있으시면 언제든지 질문해 주세요. 감사합니다!

핸들러 매핑 및 어댑터에 대한 더 많은 정보

yoon6669님의 프로필 이미지
yoon6669

작성한 질문수

질문하기