-
[Spring] SpringMVCSpring 2025. 3. 30. 02:45
이전시간에 공통 로직을 처리하는것에 코드가 중복되는 MVC 패턴을 개선하기위해 등장한 프론트 컨트롤러 패턴을 알아봤다. 그리고 프론트 컨트롤러 패턴을 각각의 핸들러 호출 후 응답을 프론트 컨트롤러에 맞게 변형시켜야 하는 문제를 개선한 어댑터 패턴이 등장했다.
이번에는 MVC 패턴과 어뎁터 패턴의 결합을 보자.

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

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