Spring MVC

전체 구조

URI

직접 만든 프레임워크 SpringMVC
FrontController DispatcherServlet
handlerMappingMap HandlerMapping (인터페이스)
MyHandlerAdapter HandlerAdapter (인터페이스)
ModelView ModelAndView
viewResolver (메소드) ViewResolver (인터페이스)
MyView View (인터페이스)

DispatcherServlet

  • SpringMVC에서 프론트 컨트롤러 역할
  • 핵심 기능
  • HttpServlet을 상속 (서블릿이 호출되면 service() 메소드가 호출됨)
  • 스프링 부트에선 서블릿으로 자동 등록함 (모든 경로에 대하여 매핑해줌)

HandlerMapping

  • 사용하고자 하는 핸들러(Controller)를 찾아줌
  • 스프링 빈의 이름으로 핸드러를 찾을 수 있음
  • 스프링 부트가 자동 등록하는 주요 HandlerMapping
    1. RequestMappingHandlerMapping : Annotation 기반의 컨트롤러인 @RequestMapping에서 사용
    2. BeanNameUrlHandlerMapping : ‘스프링 빈의 이름 == URL’로 핸들러를 찾음

HandlerAdapter

  • HandlerMapping을 통해서 찾은 핸들러를 실행할 수 있게 해줌
  • 스프링 부트가 자동 등록하는 주요 HandlerAdapter
    1. RequestMappingHandlerAdapter : Annotation 기반의 컨트롤러인 @RequestMapping에서 사용
    2. HttpRequestHandlerAdapter : HttpRequestHandler 처리
    3. SimpleControllerHandlerAdapter : Controller 인터페이스(이전에 쓰던거) 처리

<div class='notice--warning'>

<br/>
<h2>
   인프런 - 김영한님의 <strong>Spring MVC 강의</strong>를 정리한 내용입니다. <br/> 
</h2><br/>
<a href="https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard" class="btn btn--info">김영한님 인프런 강의</a><br/>
<br/>

</div>

  1. HandlerMapping이 Handler(Controller) 찾음

  2. 찾은 Handler에 알맞은 Adapter가 있나 확인

    (HandlerAdapter의 supports())

  3. 있으면 찾은 Adapter를 실행하고 Handler정보도 함께 반환

  4. 찾은 Adapter가 내부적으로 Handler를 실행 하고 결과 반환

    (override한 handleRequest 메소드 호출)

ViewResolver

  • 논리적으로 반환된 뷰 네임을 가지고 뷰 오브젝트를 찾고 생성하는 작업을 대신해줌

    • (컨트롤러가 뷰의 논리적인 이름만 반환하는 역할을 담당)
  • 스프링 부트가 자동 등록하는 주요 ViewResolver

    1. BeanNameViewResolver : 빈 이름으로 뷰를 찾아서 반환

    2. InternalResourceViewResolver : JSP를 처리할 수 있는 뷰 반환 (내부 자원 찾을 떄)

      • InternalResourceView 반환

      • JSP처럼 forward()를 호출해서 처리할 수 있는 경우 사용

      • application.properties에 등록한 설정 정보를 사용



인프런 - 김영한님의 Spring MVC 강의를 정리한 내용입니다.


김영한님 인프런 강의

댓글남기기