-
[spring] 스프링 MVC 라이프사이클 이해하기();Spring 2020. 2. 25. 22:44반응형
웹 요청을 처리하기 위해 스프링은 다양한 구성 요소들을 연동한다. 그 중심에는 항상 DispatcherServlet 객체가 존재한다!!
스프링 MVC 라이프 사이클을 간단하게 정리해 보았다. 라이프 사이클을 알아두는 것만 해도 스프링 MVC의 큰 틀을 이해할 수 있다. :)
spring MVC 라이프사이클 ㄱㄱ 스프링 MVC 라이프사이클
- 클라이언트로부터 웹브라우저를 통해 요청이 들어오면 DispatcherServlet 객체가 요청을 가로챈다.
- DispatcherServlet 객체는 요청을 처리하기 위해 HandlerMapping 객체에게 요청 경로에 부합하는 컨트롤러 객체 검색을 요청한다. HandlerMapping 객체는 요청을 처리하고 알맞은 컨트롤러 객체를 DispathcerServlet 객체에게 리턴한다.
- 컨트롤러 객체를 전달받은 DispatcherServler 객체은 @Controller, Controller 인터페이스, HttpRequestHandler 인터페이스를 동일한 방식으로 처리하기 위해 중간 역할을 하는 HandlerAdapter 객체에게 전달받은 컨트롤러 객체를 위임한다.
- HandlerAdapter 객체는 컨트롤러에 알맞은 메서드를 실행하며 Service 객체, Repository 객체를 지나 DB 커넥션을 맺으면서 요청을 처리한다.
- 요청 결과는 다시 DispatcherServlet에게 리턴되는데, 이때 처리 결과를 ModelAndView 객체로 변환하고 객체 내부에 view name을 포함한다.
- 컨트롤러 요청 처리 결과를 ModelAndView 객체로 받은 DispatcherServlet 객체는 ViewResolver 객체에게 요청 처리 결과를 넘겨준다.
- 넘겨진 ModelAndView 객체에는 컨트롤러가 리턴한 view name을 담고 있기 때문에 ViewResolver 객체는 view name에 해당하는 View 객체를 찾거나 생성해서 리턴한다.
- DispatcherServlet 객체는 ViewResolver 객체가 리턴한 View 객체에게 응답 결과 생성을 요청하고 웹 브라우저에게 응답한다.
구성 요소 정리
DispatcherServlet 객체의 역할
- 클라이언트의 실제 요청을 처리.
- 모든 연결을 담당하는 창구역할 한다.
HandlerMapping 객체의 역할
- 클라이언의로부터 요청받은 경로에 부합하는 컨트롤러 객체를 찾는다.
HandlerAdapter 객체의 역할
- HandlerMapping 객체를 통해 찾은 컨트롤러 객체를 실행한다.
- @Controller 애노테이션을 적용한 컨트롤러, 스프링 2.5까지 주로 사용됐던 Controller 인터페이스를 구현한 컨트롤러, 특수 목적으로 사용되는 HttpRequestHandler 인터페이스를 구현한 클래스를 동일한 방식으로 실행시켜준다.
- DispathcerServlet 객체는 실행 결과를 ModelAndView 타입으로만 받기때문에 처리 결과를 ModelAndView 타입으로 변환해 준다.
ViewResolver 객체의 역할
- 전달받은 ModelAndView에는 view name을 담고 있으므로 해당하는 view name을 통해서 부합하는 view를 찾는다.
반응형'Spring' 카테고리의 다른 글
[spring] 자바 Config 설정하기 vs XML 설정하기 (0) 2020.03.10 [spring] AOP 프로그래밍 분석하기(); (0) 2020.02.25 [spring] DI와 자동 의존 주입(@Autowired) 박살내기(); (0) 2020.02.20 [spring] 페이징 처리하기 (feat. Thymeleaf) (2) 2020.02.04