Spring MVC 라이프 사이클

Donghyun Kim·2022년 7월 5일
0

Flow

Filter -> DispatcherServlet -> HandlerMapping -> HandlerInterceptor -> controller -> Service -> Repository -> ViewResolver

1. Filter

Web Application의 전역적인 로직을 담당합니다.
Filter라는 단어 뜻에서 알 수 있듯이, 전체적인 필터링(설정)을 하는 곳입니다.
DispatcherServlet에 들어가기 전인 Web Application단에서 실행됩니다.

2. DispatcherServlet

들어오는 모든 Request를 우선적으로 받아 처리해주는 서블릿입니다.
HandlerMapping에게 Request에 대해 매핑할 Controller 검색을 요청합니다.
HandlerMapping으로부터 Controller 정보를 반환받아 해당 Controller와 매핑시킵니다.
Dispatcher라는 단어가 '배치 담당자'라는 뜻이 있듯이, 말 그대로 Request에 대해 어느 컨트롤러로 매핑시킬것인지 배치하는 역할을 합니다.

3. HandlerMapping

DispatcherServlet으로부터 검색을 요청받은 Controller를 찾아 정보를 리턴해줍니다.

4. HandlerInterceptor

Request가 Controller에 매핑되기전 앞단에서 부가적인 로직을 추가할 수 있습니다.
주로 세션, 쿠키, 권한 인증 로직에 많이 사용됩니다.

5. Controller

Request와 매핑되는 곳입니다.
Request에 대해 어떤 로직(Service)으로 처리할 것인지를 결정하고, 그에 맞는 Service를 호출합니다.
Service Bean을 스프링 컨테이너로부터 주입받아야 한다. Service Bean의 메소드를 호출해야 하기 때문입니다.

6. Service

데이터 처리 및 가공을 위한 비즈니스 로직을 수행합니다.
Request에 대한 실질적인 로직을 수행하기 때문에, Spring MVC Request Lifecycle의 심장이라고 볼 수 있다. Service가 없다면 서버 애플리케이션의 존재 이유도 없습니다.
Repository를 통해 DB에 접근하여 데이터의 CRUD(Create, Read, Update, Delete)를 처리합니다.

7. Repository (DAO)

DB에 접근하는 객체이다. DAO(Data Access Object) 라고 부릅니다.
Service에서 DB에 접근할 수 있게 하여 데이터의 CRUD를 할 수 있게 해줍니다.

8. ViewResolver

Controller에서 리턴한 View의 이름을 DispatcherServlet으로부터 넘겨받고, 해당 View를 렌더링합니다.
렌더링한 View는 DispatcherServlet으로 리턴하고, DispatcherServlet에서는 해당 View 화면을 Response 합니다.

출처

profile
"Hello World"

0개의 댓글