Notice
Recent Posts
Recent Comments
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Spring & Java

Filter vs Intetceptor vs AOP 본문

심화 Spring/Interceptor & AOP

Filter vs Intetceptor vs AOP

dev.hyuck 2026. 1. 26. 11:25

 

오늘은 공통 관심사 3대 처리 기술을 알아볼까 합니다. 3대 기술의 어떤 차이가 있는지 명확히 이해해야지만 실무에서 활용 가능하며, 언제 Filter, Interceptor, AOP를 써야 하는지 판단할 수 있는 실력이 향상 됩니다. 

각 기술을 직접 구현해보면서, 눈으로 직접 확인해보면서 요청 흐름 내에서 어떻게 동작하는지 실습까지 해보도록 하겠습니다. 

 

공통 관심사란 ? 

인증, 인가, 로깅, 트랜잭션, 예외 처리 등 여러 레이어에 반복적으로 등장하는 처리

핵심 로직과 분리하여 유지보수성을 높이기 위해 필요

 

왜 Filter, Interceptor, AOP 가 필요할까요?

Spring에서 웹 애플리케이션을 개발할 때, 수많은 요청마다 반복적으로 처리해야 하는 공통 로직이 존재합니다. 

예를들어 

● 모든 요청에 대해 로그를 남기고 싶다.

● 로그인된 사용자만 특정 요청을 허용하고 싶다.

● 요청이 들어올 때마다요청 시간을 측정하고 싶다

● 특정 서비스 로직 실행 전후로 공통적인 검증이나 처리를 하고 싶다

 

이런 공통 기능을 모든 컨트롤러나 서비스 코드 안에 직접 작성하게 된다면 

문제가 생깁니다.

  • 코드가 중복되고 지저분해짐.
  • 핵심 로직과 공통로직이 섞여, 가독성 저하
  • 변경 시 여러 곳을 수정해야 함 -> 유지보수 어려움
  • 재사용 불가 -> 코드 확장성 떨어짐

지난 시간때 Filter의 등장 이후 JWT랑 Filter랑 엮어서 설명을 하면서 이렇게 간편해지니까 보통 로그인 인증/인가 사용할 때 FIlter랑 같이 사용 했었요? 오늘은 이후의 학습을 더 심화 시킨다고 보시면 되겠습니다. 

 

비교하고 분석해서 핵심만 쏙쏙!

 

표를 봐도 살짝 감이 안온다면 아래 흐름도를 보면 한눈에 이해가 될 것입니다.

[사용자 요청]
   ↓
[Filter] ← 요청 시작 시 로그 출력
   ↓
[Interceptor] ← Controller 실행 전/후 로그 출력
   ↓
[AOP] ← Service 메서드 실행 전/후/예외 시점 로그 출력

 

Filter - 인증 토큰 처리 ( ex. JWT )

Atuhorzation 헤더에 담긴 JWT 토큰 유효성 검사

 

왜Filter에서 ?

● 모든 요청의 가장 앞단에서 작동

● Spring DispatcherServlet 이전에 실행되어야 함

● 인증 실패 시 컨트롤러까지 가지 않도록 빠르게 차단 가능

 

Interceptor - 로그인 여부 체크

로그인이 필요한 페이지 요청세션 또는 인증 여부 검증

 

왜 Interceptor에서?

 

● 컨트롤러 실행 직전과 직후 처리 가능

● 사용자별 세션, 권한 확인 로직 작성에 용이

● 요청 URL 기반으로 유연하게 경로별 적용 가능

 

의문이 하나 들기 시작합니다. Filter에서도 로그인 검사를 하는거 아닌가..? Interceptor 에서도 로그인 여부를 체크 하는데 같은 로그인 여부를 두번 체크 하는 것일까? 

확인해본 결과 서로 성향이 조금 다른것을 알수 있었다. 우선 세션이 등장하죠? 세션은 아주 오래동안 사용 됐었고, 인증 여부 검증은 세션에서 사용 되었기 때문에 여전히 사용하고 있다고 보면 되겠습니다.

 

AOP - 실행 시간 측정 /로깅

Service 계층에서 비즈니스 로직 실행 시간 측정 

 

왜 AOP에서?

● 서비스 전 후 사용 가능

● 특정 메서드 호출 전후에만부가 기능을 넣고 싶을 때 유리 ( 시간측정 할때 )

● 핵심 로직은 건드리지 않고 공통 처리만 분리 가능

● 다양한 메서드에 어노테이션으로 간편하게 확장 가능

 

Spring Security에서 인가를 다 처리하지 않나요?

Spring Security를 사용하고 있다면 기본적인 인증/인가 처리는 이미 Spring Security의 필터 체인과 설정 (  AuthorizeHttpRequests, @PreAuthorize) 에서 거의 담당하고 있어서 Interceptor의 사용 빈도가 확 줄어듭니다.

 

하지만 완전히 안 쓰는건 아니고, 아래와 같은 경우엔 여전히 Interceptor가 유용하게 사용됩니다.

● 작성자 본인 확인

  ○ 내가 작성한 글만 삭제 가능한 경우



● 비즈니스 조건

  ○ 유료 회원만 접근

 

하지만 모든 것이 칼 같이 구분되지는 않습니다.

이건 무조건 AOP, 이건 무조건 Filter, 이건 무조건 Interceptor 이렇게 명확하게 구분되지 않고 애매한 상황이 있을 수도 있습니다.

 

오늘은 Fileter ㅣ Interceptor ㅣ AOP 기초 이론을 배웠습니다. 어렵진 않은것 같은데 그렇다고 바로 응용 가능하도록 실습을 해보지 않는다면 휘발 될 가능성이 높아 매순간 기록하고 확인 하는 습관을 들여야겠습니다.

 

 

 

'심화 Spring > Interceptor & AOP' 카테고리의 다른 글

AOP 구현  (0) 2026.01.27
Interceptor 구현  (0) 2026.01.27