스프링 MVC 1편 - 5. 스프링 MVC - 구조 이해
Updated:
김영한님의 인프런 강의 - 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
위 강의를 정리한 내용입니다.
I. 스프링 MVC 전체 구조
- 기존의 프론트 컨트롤러 = 디스패쳐 서블릿 -> 스프링 MVC의 핵심
DispatcherServlet 서블릿 등록
HeepServlet
을 상속받아 서블릿으로 동작- 스프링부터는 이를 자동으로 등록하면서 모든경로에 대해서 매핑
동작 순서
- 핸들러 조회 : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다.
- 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다.
- 핸들러 어댑터 실행 : 핸들러 어댑터를 실행한다.
- 핸들러 실행 : 핸들러 어댑터가 실제 핸들러를 실행한다.
- ModelAndView 반환 : 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다.
- viewResolver 호출 : 뷰 리졸버를 찾고 실행한다.
- View 반환 : 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고, 렌더링 역할을 담당하는 뷰 객체를 반환한다.
- 뷰 렌더링 : 뷰를 통해 뷰를 렌더링 한다.
핸들러 매핑과 핸들러 어댑터
HandlerMapping(핸들러 매핑)
- 핸들러 매핑에서 컨트롤러를 찾을 수 있어야 한다.
- 우선순위
0 = RequestMappingHndlerMapping : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용 1 = BeanNameUrlHandlerMapping : 스프링 빈의 이름으로 핸들러를 찾는다.
HandlerAdapter(핸들러 어댑터)
- 핸들러 매핑을 통해서 찾은 핸들러를 실행할 수 있는 핸들러 어댑터가 필요하다.
- 우선순위
0 = RequestMappingHandlerAdapter : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용 1 = HttpRequestHandlerAdapter : HttpRequestHandler 처리 2 = SimpleControllerHandlerAdapter : Controller 인터페이스(애노테이션X, 과거에 사용) 처리
실무에서는 @RequestMapping
애노테이션을 사용한다.
뷰 리졸버
- 스프링 부트는
application.properties
에 등록한spring.mvc.view.prefix
,spling.mvc.view.suffix
를 토대로 뷰 리졸버를 자동으로 작성한다. - 우선순위
1 = BeanNameViewResolver : 빈 이름으로 뷰를 찾아서 반환한다. 2 = InternalResourceViewResulver : JSP를 처리할 수 있는 뷰를 반환한다.
Leave a comment