본문 바로가기

좋아하는 것_매직IT/1.spring

10.Spring, 그럼 스프링 MVC 아키텍처가 어떻게 동작을 하는지 간단하게 알아볼까요?

반응형

스프링 MVC 아키텍처의 동작 순서 및 핵심 컴포넌트에 대해서 알아보자.

  • 스프링 MVC 아키텍처의 주요 컴포넌트
    • 설명
      • 플로우
        • 뷰가있고, ModelAndView를 사용하는 컨트롤러
    • 단계
      • 1단계
        • 1-1.웹 브라우저는 특정 URL에 Request 를 보냄.
        • 1-2.프론트컨트롤러(DispatcherServlet)가 해당 Request 를 수신함.
          • 이전 블로깅에서 설명한 것처럼, DispatcherServlet 은 모든 요청을 처리함.
      • 2단계
        • 2-1.DispatcherServlet 은 URI를 보고, 이를 실제 처리하기 위한 올바른 컨트롤러를 식별함.
          • 즉, 올바른 컨트롤러를 식별하는데, Handler Mapping 과 통신하게됨.
        • 2-2.Handler Mapping은 요청을 처리하는 특정 핸들러 메소드를 반환함.
          • 예시, 스프링 MVC 컨트롤러 

  • 설명
    • 코드1) @RequestMapping(value = "/hellothubview")
      • 매핑된 URI 는 /hellothubview 
    • 코드2) return new ModelAndView("hellothubview", model)
      • 올바른 View 이름과 Model를 가진 ModelAndView 객체를 생성함.
    • 반환값은 ModelAndView
  • 3단계
    • 3-1.DispatcherServlet은 특정 핸들러 메소드를 호출함.
    • 3-2.핸들러 메소드는 Model 과 View 를 반환함.
      • 즉, ModelAndView 객체가 반환됨.
  • 4단계
    • 4-1.DispatcherServlet에는 논리적 뷰 이름이 있음.
      • 즉, 물리적 뷰 이름을 결정하는 방법을 알아내야 함.
    • 4-2.사용할 수 있는 뷰 리졸버가 있는지 여부를 확인해야하므로 설정된 뷰 리졸버를 찾음.
      • org.springframework.web.servlet.view.InternalResourceViewResolver
    • 4-3.뷰 리졸버를 호출해 논리적 뷰이름을 입력으로 제공함.
    • 4-4.뷰 리졸버는 논리적 뷰 이름을 물리적 뷰 이름에 매핑하는 로직을 실행함.
      • 예) 만약 hellothubview 라고 하면,
        • /WEB-INF/views/hellothubview.jsp 로 변환함.
          • 예시) hellothubview.jsp

  • 설명
    • 위의 nickname 으로 매핑된 "magic" 이 들어가게 된다. 
    • 5단계
      • 5-1.DispatcherServlet은 View를 실행하고, 또한 View 에서 Model을 사용할 수 있게 함.
      • 5-2.View는 DispatcherServlet으로 보내질 내용을 반환함.
    • 6단계
      • 6-1.마지막으로, DispatcherServlet은 Response 를 다시 웹브라우저로 전송함.

결론

  • 스프링 MVC 아키텍처의 동작 순서 및 핵심 컴포넌트에 대해서 알아보았음.
  • 프론트컨트롤러(DispatcherServlet)가 모든 Request 를 수신함.
  • 예시로 든것은, 뷰가있고, ModelAndView를 사용하는 컨트롤러의 플로우였음.
  • 오늘도 스프링 MVC 아키텍처의 동작 순서및 핵심 컴포넌트에 대한 마술(?) 한가지 획득 완료! 감사합니다. ^^
300x250