복습
기존에 작성한 Front Controller 패턴 게시물을 보고 오면 이해하는데 도움이 될 것입니다!
(https://jaimemin.tistory.com/1817)
Spring MVC 구조
- Front Controller 패턴과 동일한 구조
- Front Controller 역할을 Spring MVC 구조에서는 Dispatcher Servlet이 맡음
- 전체적인 플로우는 아래와 같음
- HTTP 요청
- Handler 조회
- Handler를 처리할 수 있는 HandlerAdapter 조회
- Handler 어댑터에서 Handler 호출
- ModelAndView 반환
- ViewResolver 호출 (JSP의 경우 InternalResourceViewResolver, 타임리프의 경우 ThymeleafViewResolver)
- View 반환
- View 렌더링
- HTML 응답
* 스프링 MVC의 강점 중 하나는 위 그림의 기능들이 대부분 인터페이스로 제공되기 때문에 DispatcherServlet의 코드를 변경하지 않더라도 기능 변경 및 확장이 가능하다는 점
DispatcherServlet 클래스 코드
- 코드 흐름을 보시면 위 그림의 흐름과 동일하게 진행되는 것을 확인할 수 있습니다.
- 한글로 작성된 주석 참고
비고
DispatcherServlet 추가 내용
- 부모 클래스에서 HttpServlet 클래스를 상속 받아서 사용하고, 서블릿으로 동작
- Spring Boot는 DispatcherServlet를 서블릿으로 자동으로 등록하면서 모든 경로에 대해서 매핑 즉, urlPatterns="/"에 대해 매핑
- 별도 Controller가 선언이 되어있고 자세한 경로가 있을 경우 해당 Controller들이 우선순위 더 높음
Controller가 호출되기 위한 2가지 조건
- 핸들러 매핑에서 해당 컨트롤러를 찾을 수 있어야하고
- 핸들러 매핑을 통해서 찾은 핸들러를 실행할 수 있는 핸들러 어댑터가 필요
- 실무에서는 대부분 RequestMappingHandlerMapping, RequestMappingHandlerAdapter를 사용
* 스프링은 이미 필요한 핸들러 매핑과 핸들러 어댑터가 대부분 구현되어있으므로 직접 개발할 확률은 희박함
* 핸들러 매핑에 대한 추가 내용 (https://www.baeldung.com/spring-handler-mappings)
* 핸들러 어댑터에 대한 추가 내용 (https://www.baeldung.com/spring-mvc-handler-adapters)
출처
인프런 스프링 MVC 1편 (김영한 강사님)
반응형
'Spring' 카테고리의 다른 글
[Spring Boot] 메시지, 국제화 간단 정리 (0) | 2021.07.10 |
---|---|
HttpMessageConverter 간단 정리 (0) | 2021.06.11 |
클라이언트에서 서버로 HTTP 요청 메시지 보내는 방법 (0) | 2021.06.02 |
빈 스코프 (Bean Scope) (0) | 2021.05.26 |
스프링 빈 생명주기 (Spring Bean Life Cycle) (0) | 2021.05.25 |