컨트롤러(Controller)의 '핸들러(Handler)'를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 일종의 필터
애플리케이션에서 발생하는 요청과 응답을 가로채는 기능을 제공하는 프로그래밍 컴포넌트.
주로 웹 애플리케이션에서 사용, 요청과 응답에 대한 중간 처리를 수행하거나 로깅, 보안, 캐싱 등 기능을 추가할 수 있다.
Interceptor는 일종의 Filter와 유사한 역할 수행,
but 필터와 달리 컨트롤러(Handler)로 요청이 전달된 후에 실행.
Interceptor는 컨트롤러에서 처리되기 전과 후에 실행되는 로직을 구현할 수 있으며, 컨트롤러 메소드에서 발생한 예외에 대한 처리 가능.
Interceptor는 일반적으로 인증과 권한 체크, 로깅, 캐싱, 성능 측정 등 기능을 구현하는데 사용.
사용자 인증을 확인하거나, 요청과 응답에 대한 로그를 남기는 등 작업 수행.
Spring Framework에서는 HandlerInterceptor 인터페이스 구현해 Interceptor 생성, Interceptor를 등록하기 위해서는 InterceptorRegistry에 추가하는 방법 사용.
이러한 문제점을 줄이기 위한 수단 -> Interceptor
Interceptor 사용시 개발자는 Handler의 수 만큼 작성했던 세션 체크 코드를 Interceptor 클래스에 한번만 작성하면 된다.
이로 인해 코드의 량이 현저히 줄어 메모리 낭비를 줄일 ㅅ ㅜ있따.
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의 파라미터를 전달할 수 있다.