Backend/Java

Spring - interceptor

개발자의 첫 걸음 2025. 12. 16. 10:00

안녕하세요. 오늘은 인터셉터(interceptor)에 대해 알아볼게요.

 

 

 

interceptor

 

인터셉터(interceptor)는 Spring MVC의 핵심 기능 중 하나로, 

 

웹 애플리케이션에서 공통적인 처리를 재사용할 수 있게 해주는 강력한 도구예요.

 

인터셉터는 들어오는 요청과 나가는 응답을 가로채어 특정 로직을 수행할 수 있게 해주는 메커니즘을 제공해요.

 

이는 AOP(Aspect-Oriented Programming)의 일종으로 볼 수 있고,

 

컨트롤러(Controller)로 요청이 도달하기 전, 후 또는 완료된 후에 추가적인 처리를 하기 위해 사용돼요.

 

즉 인터셉터는 “요청이 컨트롤러에 도착하기 전·후에 공통 작업을 대신 처리해 주는 문지기” 에요.

 

 

 

인터셉터 활용 사례

 

1. 인증(Authentication) 및 권한-인가 부여(Authorization)

 

이 사용자가 누구인지, 이 요청을 할 권한이 있는지 확인

 

이 사례의 목적은 로그인을 했는지 확인과 관리자만 접근 가능한 URL인지 검사해 줘요.

 

이 확인은 컨트롤러에 들어가기 전 실행이 돼요.(preHandle)

/board/write 요청
→ 로그인 안 됨
→ 컨트롤러 진입 차단
→ 로그인 페이지로 리다이렉트

- 컨트롤러마다 로그인 체크 코드를 쓰지 않아도 돼요.

 

 

2. 로깅(log) 및 감사(Audit)

 

누가, 언제, 어떤 요청을 했는지 기록

 

이 사례는 요청한 URL, 사용자 ID, 요청 성공, 실패 여부 등을 기록하는 친구예요.

 

요청 시작과 요청 종료(afterCompletion) 시 실행돼요.

[START] userId=kim, URL=/order
[END]   처리시간=120ms, 결과=SUCCESS

- 장애 추적, 보안 감사에 매우 중요해요.

 

 

3. 성능 모니터링 (Performance Monitoring)

 

요청 하나가 얼마나 오래 걸렸는지 측정

 

요청 시작 시간 저장, 요청 종료 시간 계산, 느린 API탐지를 해요.

 

시작 시간 기록(preHandle)과 종료 시간 계산(afterComlpetion)에 실행이 돼요.

 

/api/pay 처리 시간: 2.3초 (⚠️ 느림)

- 성능 튜닝 포인트를 찾는 데 도움이 돼요.

 

 

4. 공통 응답 데이터 추가 

 

모든 응답에 공통으로 들어가야 하는 정보 처리

 

공통 헤더, 공통 모델 데이터 추가를 해요.

 

View 렌더링 전 (postHandle) 실행이 돼요.

모든 응답에:
- 서버 시간
- 애플리케이션 버전
- 공통 메뉴 정보

 

 

다음은 인터셉터의 네 가지 종류 간단 정리 표예요.

 

활용 사례 한 줄 예시
인증/권한 “이 요청, 해도 되는 사람인가?”
로깅 “누가 무엇을 했는지 기록”
성능 측정 “이 요청, 얼마나 걸렸나?”
공통 데이터 “모든 응답에 들어갈 기본 정보”

 

 

 

여기까지 인터셉터에 대해 알아봤는데요.

 

반복되는 공통 로직을 깔끔하게 처리할 수 있어서 유요한 기능 같아요.

'Backend > Java' 카테고리의 다른 글

Spring - RestTemplate  (0) 2025.12.23
Spring - OSIV  (0) 2025.12.18
영속성 컨텍스트 (Persistence Context)  (1) 2025.12.14
Spring Boot - Mustache  (0) 2025.12.12
Spring Security OAuth2  (0) 2025.12.08