본문 바로가기

개발Blog/웹개발(Spring)

[웹개발/spring] Interceptor란 무엇인가 ?

반응형

웹개발 하다보면 꼭 접하는 내용으로 이전 포스팅에서
Filter, Interceptor, AOP 에 대한 간단한 개념과 차이점에 대해 설명했었는데요!
이번 글에서는 Interceptor에 대해 좀 더 파헤쳐보겠습니다!

 

Interceptor란?

웹 애플리케이션을 만들 때 이런 생각 해보신 적 있나요?


“컨트롤러에 들어오는 요청을 미리 가로채서 처리하면 편리하지 않을까?”
“필터와는 다르게 Spring MVC의 깊은 곳, 컨트롤러나 메서드 실행 직전에 뭔가를 하고 싶다면 어떻게 하지?”

바로 이런 순간에 등장하는 해결사가 Interceptor입니다!


Interceptor는 Spring MVC에서 제공하는 기능으로,
요청(request)이 컨트롤러에 도달하기 전후에 특정 작업을 처리할 수 있는 역할을 합니다.
쉽게 말해, 컨트롤러 바로 앞에서 일하는 비서라고 할 수 있어요.

 


Interceptor는 이런 일을 해요!

  1. 요청 전 처리 (preHandle)
    요청이 컨트롤러로 전달되기 전에 실행돼요.
    • 예: 로그인 확인, 권한 체크, 특정 요청 차단한다. “이 요청, 로그인 안 했으면 막아야지!”
  2. 요청 후 처리 (postHandle)
    컨트롤러가 요청을 처리한 직후에 실행돼요.
    • 예: 컨트롤러에서 반환된 데이터를 가공하거나 추가 작업 수행한다.“응답 데이터에 추가 정보를 덧붙이자!”
  3. 요청 완료 후 처리 (afterCompletion)
    뷰(View) 렌더링까지 완료된 이후에 실행돼요.
    • 예: 로그 기록, 리소스 정리.“요청 처리가 끝났으니, 로그에 남겨야지!”

Interceptor와 Filter의 차이점

구분 Filter Interceptor
작동 위치 서블릿 컨테이너 수준 Spring MVC 수준
주요 목적 요청/응답의 전반적인 처리 컨트롤러와 메서드 수준의 작업 처리
생명 주기 서블릿 요청 전후 컨트롤러 메서드 실행 전후
대상 모든 요청 Spring MVC의 요청

Interceptor를 어떻게 구현하나요?

Spring에서 Interceptor를 구현하려면 HandlerInterceptor 인터페이스를 사용하면 돼요.
아래는 간단한 예제입니다:

 

import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyInterceptor implements HandlerInterceptor {

    // 요청 전 처리
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("요청 전 처리: preHandle");
        // true를 반환하면 요청 진행, false는 요청 중단
        return true;
    }

    // 요청 후 처리
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("요청 후 처리: postHandle");
    }

    // 요청 완료 후 처리
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("요청 완료 후 처리: afterCompletion");
    }
}

 


Interceptor의 동작 흐름

  1. 클라이언트가 요청을 보냅니다.
  2. 요청이 Interceptor를 거칩니다.
    • preHandle: 요청 전 작업.
  3. 요청이 컨트롤러에 도달해 처리됩니다.
  4. 컨트롤러에서 반환된 응답이 Interceptor를 거칩니다.
    • postHandle: 요청 후 작업.
  5. 최종적으로 요청이 완료되면 Interceptor가 정리 작업을 수행합니다.
    • afterCompletion: 요청 완료 후 작업.

Interceptor의 장점

  • 컨트롤러 중심 작업: 컨트롤러와 밀접한 로직 처리에 적합.
  • 유연성: 특정 경로에만 Interceptor를 적용 가능.
  • 코드 분리: 컨트롤러에 공통 작업을 분리해 깔끔한 코드 유지.

 

2025.01.17 - [개발Blog/웹개발(Spring)] - [웹개발/spring] Filter, Interceptor, AOP 의 개념 및 차이

 

[웹개발/spring] Filter, Interceptor, AOP 의 개념 및 차이

Filter, Interceptor, AOP? 뭐가 다를까?웹 개발하다 보면 **요청(request)**이 들어오고 **응답(response)**이 나가는 과정에서 뭔가를 가로채거나,추가로 처리해야 할 때가 많죠? 예를 들면 "로그인을 안 했으

godbokdol2.tistory.com