Spring MVC 동작원리

2023. 9. 25. 17:08카테고리 없음

 

  1. DispatcherServlet클라이언트로부터 받은 요청을 전달받는다.
  2. HandlerMapping은 해당 요청을 처리할 Controller가 있는지 찾고 해당 Controller 정보를 다시 DispatcherServlet에 리턴한다. (Controller 정보는 Controller 안에 있는 Handler 메서드 정보도 포함)
  3. DispatcherServlet은 Handler 메서드를 직접 호출하지 않고 HandlerAdapter에게 Handler 메서드 호출 책임을 넘긴다. HandlerAdapter은 전달받은 Controller 정보를 가지고 해당 Controller의 Handler 메서드를 직접 호출한다.
  4. Controller의 Handler 메서드는 Service, DAO, DB를 거쳐 비즈니스 로직을 처리한 후, 뷰에 전달할 객체를 Model 객체에 저장하고 View의 논리적인 이름만 HandlerAdapter에게 리턴한다.
  5. HandlerAdapter은 리턴받은 Model 데이터와 View 이름을 다시 DispatcherServlet에게 리턴한다.
  6. DispatcherServlet은 리턴받은 View 이름을 ViewResolver에게 요청하고 해당하는 View를 찾아 DispatcherServlet에게 반환한다.
  7. DispatcherServlet은 ViewResolver에게 받은 View 객체에게 Model 데이터를 넘겨주면서 클라이언트에게 응답할 데이터를 생성한다.
  8. View로부터 응답 데이터를 리턴받은 DispatcherServlet클라이언트에게 처리 결과를 전달한다.

 

 

DispatcherServlet의 역할

  • 직접적으로 요청을 처리하지 않고 다른 구성요소에게 요청을 위임(Delegate)합니다.
  • 애플리케이션 가장 앞단 배치되어 다른 구성 요소들과 상호작용하면서 클라이언트 요청을 처리하는 패턴을 Front Controller Pattern이라고 한다.

 

 

 

참고 : https://starkying.tistory.com/entry/Spring-MVC-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC-%EA%B5%AC%EC%84%B1%EC%9A%94%EC%86%8C