본문 바로가기

Spring Boot

[Spring Boot] Spring MVC 아키텍처: 요청 처리 흐름과 주요 컴포넌트

728x90

 

Spring MVC 주요 구성 요소 설명

1. 필터 (Filter)

  • 역할: 필터는 클라이언트의 요청이 서버에 도달하기 전에 전처리를 수행하는 컴포넌트입니다. 필터는 웹 애플리케이션의 여러 요청과 응답에 대한 공통 작업을 수행할 수 있습니다.
  • 용도:
    • 로그 기록: 요청의 메서드, URL, 클라이언트 IP 주소 등을 로그로 기록하여 요청 분석에 도움을 줍니다.
    • 인증 및 권한 검사: 사용자의 인증 상태를 확인하고, 인증되지 않은 사용자의 요청을 차단합니다.
    • 형 변환: 요청 데이터를 적절한 형식으로 변환하거나, 요청에 대한 추가 처리를 수행합니다.

 

2. 디스패처 서블릿 (DispatcherServlet)

  • 역할: 디스패처 서블릿은 Spring MVC의 중앙 관리자로서, 클라이언트의 HTTP 요청을 가로채어 적절한 핸들러로 전달하는 역할을 합니다.
  • 용도:
    • 요청 라우팅: URL 매핑에 따라 요청을 적절한 컨트롤러(핸들러)로 라우팅합니다.
    • 모델과 뷰 처리: 핸들러의 반환값을 기반으로 모델과 뷰를 결합하여 최종 응답을 생성합니다.
    • 예외 처리: 요청 처리 중 발생한 예외를 잡아 적절한 예외 핸들러를 호출합니다.

 

3. 핸들러 매핑 (HandlerMapping)

  • 역할: 핸들러 매핑은 클라이언트의 요청 URL에 따라 해당 요청을 처리할 핸들러(컨트롤러)를 찾는 역할을 합니다.
  • 용도:
    • URL 매핑: 요청 URL과 핸들러를 연결하여, 요청에 적합한 핸들러를 선택합니다.
    • 조건부 매핑: 요청 메서드(예: GET, POST)나 헤더 정보에 따라 다르게 핸들러를 선택할 수 있습니다.

 

4. 핸들러 인터셉터 (HandlerInterceptor)

  • 역할: 핸들러 인터셉터는 요청 처리 전에 또는 후에 추가적인 작업을 수행하는 컴포넌트입니다. 필터와 유사하지만, 더 세밀한 제어가 가능합니다.
  • 용도:
    • 로그 기록 및 모니터링: 요청이 처리되기 전후에 로그를 남겨 성능 모니터링이나 분석에 사용됩니다.
    • 권한 검사: 요청 처리 전에 사용자의 권한을 검증하고, 필요한 경우 요청을 차단합니다.
    • 시간 측정: 요청 처리 시간을 측정하여 성능을 분석합니다.

 

5. 컨트롤러 (Controller)

  • 역할: 컨트롤러는 클라이언트의 요청을 처리하고, 비즈니스 로직을 실행하는 주요 컴포넌트입니다. 요청을 받아 필요한 데이터를 모델에 추가하고, 적절한 뷰를 반환합니다.
  • 용도:
    • 비즈니스 로직 호출: 서비스 계층에 비즈니스 로직을 요청하여 필요한 데이터를 가져옵니다.
    • 모델 생성: 처리된 데이터를 바탕으로 모델을 생성하고, 뷰에 전달합니다.
    • 응답 생성: 최종적으로 클라이언트에 응답할 데이터를 준비합니다.

 

6. 서비스 (Service)

  • 역할: 서비스 계층은 비즈니스 로직을 처리하는 클래스들로 구성됩니다. 컨트롤러로부터 요청을 받아 필요한 처리를 수행합니다.
  • 용도:
    • 비즈니스 로직 구현: 요청에 대한 비즈니스 로직을 구현하여 데이터를 처리합니다.
    • 트랜잭션 관리: 여러 데이터베이스 작업을 하나의 트랜잭션으로 묶어 처리합니다.
    • 다양한 비즈니스 서비스 제공: 다른 서비스 또는 데이터베이스와의 통신을 통해 필요한 비즈니스 서비스를 제공합니다.

 

7. 데이터베이스 (Database)

  • 역할: 데이터베이스는 애플리케이션의 데이터를 저장하고 관리하는 컴포넌트입니다. 서비스 계층이 데이터베이스에 접근하여 CRUD(Create, Read, Update, Delete) 작업을 수행합니다.
  • 용도:
    • 데이터 저장: 애플리케이션의 데이터를 안전하게 저장하고, 필요할 때 쉽게 조회할 수 있도록 합니다.
    • 데이터 무결성 관리: 데이터의 일관성과 무결성을 보장하기 위한 다양한 제약 조건을 설정합니다.

 

8. 예외 핸들러 (ExceptionHandler)

  • 역할: 예외 핸들러는 애플리케이션에서 발생하는 예외를 처리하는 컴포넌트입니다. 요청 처리 과정에서 발생한 예외를 잡아 클라이언트에게 적절한 응답을 반환합니다.
  • 용도:
    • 예외 처리: 비즈니스 로직이나 데이터베이스 작업 중 발생한 예외를 잡아 사용자에게 친절한 오류 메시지를 전달합니다.
    • 커스텀 오류 페이지 제공: 특정 예외에 대해 커스텀 오류 페이지를 설정하여 사용자 경험을 향상시킵니다.
728x90