ABOUT ME

Paragon의 Cave 블로그~

Today
Yesterday
Total
  • [Spring] SpringMVC
    Spring 2025. 3. 30. 02:45

    이전시간에 공통 로직을 처리하는것에 코드가 중복되는 MVC 패턴을 개선하기위해 등장한 프론트 컨트롤러 패턴을 알아봤다. 그리고 프론트 컨트롤러 패턴을 각각의 핸들러 호출 후 응답을 프론트 컨트롤러에 맞게 변형시켜야 하는 문제를 개선한 어댑터 패턴이 등장했다.

     

    이번에는 MVC 패턴과 어뎁터 패턴의 결합을 보자.

     

    MVC 패턴

     

     

     

    1. 요청이 오면 Controller에서 파라미터 정보 확인하여 비지니스 로직을 실행한다.
    2. 비지니스 로직의 결과 Data 를 Model에 담아서 View에 전달해준다.
    3. View는 모델의 Data를 참조하여 화면을 그려준다.

     

    Spring MV

    • 실행순서
      1. Client로 부터 HTTP 요청(Request)을 받는다.
      2. Handler 조회
        • Handler Mapping을 통해 요청 URL에 Mapping된 Handler(Controller)를 조회
      3. Handler를 처리할 Adapter 조회
        • Handler를 처리할 수 있는 Handler Adapter를 조회
      4. Handler Adapter 실행(handle)
        • 알맞은 어댑터가 존재한다면 Handler Adapter에게 요청을 위임한다.
      5. Handler 실행(호출)
        • Handler Adapter가 실제 Handler(Controller)를 호출하여 실행 및 결과 반환
      6. Model And View 반환(return)
        • Handler Adapter는 Handler가 반환 하는 정보를 ModelAndView 객체로 변환하여 반환
      7. viewResolver 호출(알맞은 View 요청)
        • View Resolver를 찾고 실행
      8. View 반환
        • View Resolver는 View의 논리 이름을 물리 이름으로 전환하는 역할을 수행하고 Rendering 역할을 담당하는 View( 인터페이스로 구성되어 있다, 확장성을 가지고 있다. ) 객체를 반환
      9. View Rendering
        • View를 통해서 View를 Rendering
    • DispatcherServlet
      1. Servlet의 한  종류이며, Spring의 프론트 컨트롤러
      2. 클라이언트 HTTP Request를 알맞게 파싱하고 클라이언트에게 알맞은 응답을 반환
      3. 핸들러 목록 정보를 알고있다.
      4. 핸들러 어댑터 목록 정보를 알고있다.
      5. 코드 변경없이 기능 변경 및 확장이 가능하다.
    • HandlerAdapter
      1. 자신이 처리할 수 있는 Handler인지 확인할 수 있는 기능(Method)이 필요하다.
      2. 프론트 컨트롤러에서 요청을 위임받았을 때 핸들러에게 요청을 지시하는 기능이 필요하다.
      3. return 시 Handler로부터 전달받은 결과를 알맞은 응답으로 변환한다.
    • Handler
      1. 요청에 대한 로직을 수행하는 기능이 필요하다.

    Spring MVC의 주요 Interface

     

        DispatcherServlet 코드의 변경 및 확장이 가능하다.

              인터페이스를 implements 하여 구현하면, 내가 만든 클래스를 사용할 수 있다.(다양성)

     

     

     

         
    @Componet(" ") Sptring Bean에 등록하는 역활을 수행한다..  

     

    'Spring' 카테고리의 다른 글

    [Spring] Redis  (0) 2025.04.14
    [Spring] 과제 - Trobleshooting Session을 이용한 로그인 유지.  (1) 2025.04.04
    [Spring] MVC 패턴 문제  (0) 2025.03.29
    [Spring] MVC 패턴  (0) 2025.03.29
    [Spring] Annotation  (0) 2025.03.29
Designed by Tistory.