Home Spring MVC - 구조 이해
Post
Cancel

Spring MVC - 구조 이해

Spring MVC 구조

Alt text 동작 순서

  1. 핸들러 조회 : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회
  2. 핸들러 어댑터 조회 : 핸들러를 실행 할 수 있는 핸들러 어댑터를 조회
  3. 핸들러 어댑터 실행 : 핸들러 어댑터 실행
  4. 핸들러 실행 : 핸들러 어댑터가 실제 핸들러를 실행
  5. ModelAndView 반환 : 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환하여 반환
  6. viewResolver 반환 : 뷰 리졸버를 찾고 실행
      * JSP의경우 InternalResourceViewResolver가 자동 등록되고 사용됨
  7. View 반환 : 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸로, 렌더링 역할을 담당하는 뷰 객체를 반환
      * JSP의경우 InternalResourceView(JstlView)를 반환하는데 내부에 forward() 로직이 있음
  8. 뷰 렌더링 : 뷰를 통해 뷰를 렌더링

스프링 MVC의 가장 큰 강점은 DispatcherServlet 코드의 변경 없이 원하는 기능을 변경하거나 확장 할 수 있다는 점. 대부분을 확장 가능할 수 있게 인터페이스로 제공하며 이러한 인터페이스들만 구현하여 DispatcherServlet 에 등록하면 자신만의 컨트롤러를 구현할 수도 있음.

주요 인터페이스 목록으로는 아래와 같이 존재

  • 핸들러 매핑 : org.springframework.web.servlet.HandlerMapping
  • 핸들러 어댑터 : org.springframework.web.servlet.HandlerAdapte
  • 뷰 리졸버 : org.springframework.web.servlet.ViewResolver
  • 뷰 : org.springframework.web.servlet.View

DispatcherServlet 서블릿 등록

  • DispatcherServlet도 부모 클래스에서 HttpServlet을 상속방아 사용하고 서블릿으로 동작 함.
    • DispatcherServlet -> FrameworkServlet -> HttpServletBean -> HttpServlet
  • 스트링 부트는 DispatcherServlet을 서블릿으로 자동으로 등록하면서 모든경로(urlPatterns=”/”)에 대하여 매핑 함

참고

  • 스프링 MVC - 백엔드 웹 개발 핵심 기술(김영한)
This post is licensed under CC BY 4.0 by the author.