[SPRING]스프링 MVC 1편 - 스프링MVC 구조 이해

Jimin·2022년 12월 29일
0

스프링 MVC

목록 보기
1/3
post-custom-banner

스프링 mvc 구조

  • FrontController -> DispatcherServlet
  • handlerMappingMap -> HandlerMapping
  • MyHandlerAdapter -> HandlerAdapter
  • ModelView -> ModelAndView
  • viewResolver -> ViewResolver
  • MyView -> View

DispatcherServlet이 제일 중요함

  • DispatcherServlet -> FrameworkServlet -> HttpServletBean -> HttpServlet
  • 스프링은 서블릿을 모든 경로에 대해 자동으로 매핑함
  • DispatcherServlet에서 doDispatch() 호출

  • 스프링 mvc 강점: DispatcherServlet 코드 변경 없이 원하는 기능을 변경하거나 확장 가능함



핸들러 매핑과 어댑터

Controller 인터페이스는 @Controller 애노테이션과는 전혀 다름

@Component : 이 컨트롤러는 /springmvc/old-controller 라는 이름의 스프링 빈으로 등록되었다.
빈의 이름으로 URL을 매핑할 것이다.

컨트롤러가 호출되기 위해 필요한 2가지

  • HandlerMapping(핸들러 매핑)
    • 핸들러 매핑에서 이 컨트롤러를 찾을 수 있어야 한다.
    • 예) 스프링 빈의 이름으로 핸들러를 찾을 수 있는 핸들러 매핑이 필요하다.
  • HandlerAdapter(핸들러 어댑터)
    • 핸들러 매핑을 통해서 찾은 핸들러를 실행할 수 있는 핸들러 어댑터가 필요하다.
    • 예) Controller 인터페이스를 실행할 수 있는 핸들러 어댑터를 찾고 실행해야 한다.

  • OldController 핸들러 매핑, 어댑터

    • HeaderMapping = BeanNameUrlHandlerMapping
    • HeaderAdapter = SimpleControllerHandlerAdapter
  • HttpRequestHandler 핸들러 매핑, 어댑터

    • HeaderMapping = BeanNameUrlHandlerMapping
    • HeaderAdapter = HttpRequestHandlerAdapter

@RequestMapping: 가장 우선순위가 높은 핸들러 매핑과 핸들러 어댑터는 RequestMappingHandlerMapping, RequestMappingHandlerAdapter 이다.




뷰리졸버

  • 스프링 부트는 InternalResourceViewResolver라는 뷰리졸버를 자동 등록하는데 이때 application.properties에 등록한 spring.mvc.view.prefixspring.mvc.view.suffix 설정 정보를 사용해 등록함

  • 스프링 부트가 자동으로 등록하는 뷰리졸버

  1. BeanNameViewResolver: 빈 이름으로 찾아서 반환 (엑셀 파일 생성 기능)
  2. InternalResourceViewResolver: JSP를 처리할 수 있는 뷰 반환
  • InternalResourceView는 JSP처럼 forward()를 호출해 처리할 수 있는 경우 사용함


  • 스프링 부트가 위의 과정을 자동을 대신 해줌
post-custom-banner

0개의 댓글