Spring MVC 동작원리
2023. 9. 25. 17:08ㆍ카테고리 없음
- DispatcherServlet은 클라이언트로부터 받은 요청을 전달받는다.
- HandlerMapping은 해당 요청을 처리할 Controller가 있는지 찾고 해당 Controller 정보를 다시 DispatcherServlet에 리턴한다. (Controller 정보는 Controller 안에 있는 Handler 메서드 정보도 포함)
- DispatcherServlet은 Handler 메서드를 직접 호출하지 않고 HandlerAdapter에게 Handler 메서드 호출 책임을 넘긴다. HandlerAdapter은 전달받은 Controller 정보를 가지고 해당 Controller의 Handler 메서드를 직접 호출한다.
- Controller의 Handler 메서드는 Service, DAO, DB를 거쳐 비즈니스 로직을 처리한 후, 뷰에 전달할 객체를 Model 객체에 저장하고 View의 논리적인 이름만 HandlerAdapter에게 리턴한다.
- HandlerAdapter은 리턴받은 Model 데이터와 View 이름을 다시 DispatcherServlet에게 리턴한다.
- DispatcherServlet은 리턴받은 View 이름을 ViewResolver에게 요청하고 해당하는 View를 찾아 DispatcherServlet에게 반환한다.
- DispatcherServlet은 ViewResolver에게 받은 View 객체에게 Model 데이터를 넘겨주면서 클라이언트에게 응답할 데이터를 생성한다.
- View로부터 응답 데이터를 리턴받은 DispatcherServlet은 클라이언트에게 처리 결과를 전달한다.
DispatcherServlet의 역할
- 직접적으로 요청을 처리하지 않고 다른 구성요소에게 요청을 위임(Delegate)합니다.
- 애플리케이션 가장 앞단 배치되어 다른 구성 요소들과 상호작용하면서 클라이언트 요청을 처리하는 패턴을 Front Controller Pattern이라고 한다.