[스프링 MVC 1편] 스프링 MVC

강신현·2022년 9월 14일
0

✅ DispatcherServlet ✅ @Controller ✅ @RequestMapping ✅ @GetMapping ✅ @PostMapping


💡 DispatcherServlet

FrontController 의 역할을 수행한다.

  • 부모 클래스에서 HttpServlet 을 상속 받아서 사용하고, 서블릿으로 동작한다.
  • 스프링 부트는 DispacherServlet 을 서블릿으로 자동으로 등록하면서 모든 경로( urlPatterns="/" )에 대해서 매핑한다.

동작 순서

  1. 핸들러 조회 : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다.
  2. 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다.
  3. 핸들러 어댑터 실행 : 핸들러 어댑터를 실행한다.
  4. 핸들러 실행 : 핸들러 어댑터가 실제 핸들러를 실행한다.
    스프링은 이미 필요한 핸들러 매핑과 핸들러 어댑터를 대부분 구현해두었다. 개발자가 직접 핸들러 매핑과 핸들러 어댑터를 만드는 일은 거의 없다.
  5. ModelAndView 반환 : 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다.
  6. viewResolver 호출 : 뷰 리졸버를 찾고 실행한다.
  7. View 반환 : 뷰리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고,렌더링 역할을 담당하는 뷰객체를 반환한다.
  8. 뷰 렌더링 : 뷰를 통해서 뷰를 렌더링 한다.

💡 HandlerMapping

  1. RequestMappingHandlerMapping : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
  2. BeanNameUrlHandlerMapping : 스프링 빈의 이름으로 핸들러를 찾는다.

💡 HandlerAdapter

  1. RequestMappingHandlerAdapter : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
  2. HttpRequestHandlerAdapter : HttpRequestHandler 처리
  3. SimpleControllerHandlerAdapter : Controller 인터페이스(애노테이션X, 과거에 사용) 처리

💡 @RequestMapping

@Controller
  public class SpringMemberFormControllerV1 {
  
      @RequestMapping("/springmvc/v1/members/new-form")
      public ModelAndView process() {
          return new ModelAndView("new-form");
      }
}

@Controller

스프링이 자동으로 스프링 빈으로 등록한다.

  • 내부에 @Component 애노테이션이 있어서 컴포넌트 스캔의 대상이 됨
  • 스프링 MVC에서 애노테이션 기반 컨트롤러로 인식한다.

@RequestMapping

요청 정보를 매핑한다.

  • 해당 URL이 호출되면 이 메서드가 호출된다.
  • 애노테이션을 기반으로 동작하기 때문에, 메서드의 이름은 임의로 지으면 된다.
  • URL만 매칭하는 것이 아니라, HTTP Method도 함께 구분할 수 있다.
@RequestMapping(value = "/new-form", method = RequestMethod.GET)

@GetMapping , @PostMapping

위 코드를 더 편리하게 사용할 수 있는 어노테이션이다.

  • @RequestMapping 애노테이션을 내부에 포함하고 있다.

강의 출처

[인프런 - 김영한] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

profile
땅콩의 모험 (server)

0개의 댓글