<TIL> 64. Interceptor, Handler?

YUJIN LEE·2023년 3월 16일
0

개발log

목록 보기
59/149

Interceptor(인터셉터)?

컨트롤러(Controller)의 '핸들러(Handler)'를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 일종의 필터

애플리케이션에서 발생하는 요청과 응답을 가로채는 기능을 제공하는 프로그래밍 컴포넌트.
주로 웹 애플리케이션에서 사용, 요청과 응답에 대한 중간 처리를 수행하거나 로깅, 보안, 캐싱 등 기능을 추가할 수 있다.

Interceptor는 일종의 Filter와 유사한 역할 수행,
but 필터와 달리 컨트롤러(Handler)로 요청이 전달된 후에 실행.
Interceptor는 컨트롤러에서 처리되기 전과 후에 실행되는 로직을 구현할 수 있으며, 컨트롤러 메소드에서 발생한 예외에 대한 처리 가능.

Interceptor는 일반적으로 인증과 권한 체크, 로깅, 캐싱, 성능 측정 등 기능을 구현하는데 사용.
사용자 인증을 확인하거나, 요청과 응답에 대한 로그를 남기는 등 작업 수행.

Spring Framework에서는 HandlerInterceptor 인터페이스 구현해 Interceptor 생성, Interceptor를 등록하기 위해서는 InterceptorRegistry에 추가하는 방법 사용.

Interceptor를 사용하지 않을 시 생기는 문제점?

  1. 메모리 낭비, 서버의 부하 증가
    • 적용해야할 Handler 수만큼 세션 체크 코드를 작성함으로써 반복되는 코드 증가
  2. 코드의 누락 가능성.
    • 회원정보에 접근하는 Handler가 세션체크가 누락되어 관리자인지 확인을 안한다면, 자격이 없는 사용자가 접근할 수 있어 보안적으로 큰 문제를 가질 수 있음.

이러한 문제점을 줄이기 위한 수단 -> Interceptor
Interceptor 사용시 개발자는 Handler의 수 만큼 작성했던 세션 체크 코드를 Interceptor 클래스에 한번만 작성하면 된다.
이로 인해 코드의 량이 현저히 줄어 메모리 낭비를 줄일 ㅅ ㅜ있따.

Handler

HTTP 요청을 처리하는 메소드나 함수를 가리키는 용어,
주로 웹 애플리케이션에서 사용.
Handler는 클라이언트로부터 요청된 URI와 HTTP Method에 따라 적절한 로직을 수행하는 컴포넌트.

Handler는 주로 컨트롤러(Controller) 또는 API 엔드포인트(API endpoint)에서 구현

Handler는 주로 MVC(Model - View - Controller) 아키텍처에서 컨트롤러(Controller)에 구현, 클라이언트 요청에 대한 적절한 처리를 수행하는 로직 담당.
Handler는 요청 처리 후에 응답을 반환 or 다음 처리 단계를 위해 체인(Chain)에 다음 핸들러를 호출하는 등 작업 수행

Spring Framework에서는 HandlerInterceptor를 통해 Handler의 실행 전과 후에 추가 작업을 수행할 수 있고, HandlerMethodArgumentResolver를 통해 Handler의 파라미터를 전달할 수 있다.

profile
인정받는 개발자가 되고싶습니다.

0개의 댓글