[Spring] filter vs AOP vs Interceptor

2025. 4. 9. 22:02·Back-end/Spring
목차
  1. 🍎 Filter, Interceptor, AOP 차이 - 호출 시기
  2. 참고
반응형

 

로깅 및 API 호출 전 사용자 권한 필터 등 다양한 곳에서 로직이 호출되기 이전, 이후에 공통적으로 처리해야 할 기능들이 존재한다.

 

대표적인 예로 Logging, 인증, 인가, 인코딩 변환 등등이 있다.

 

공통적인 기능의 코드를 모든 모듈 및 페이지에서 작성하게 되면 코드의 중복이 발생하게 되고 MSA 기반에서는 각 모듈마다 다른 코드가 작성되어 관리가 힘들 수 있다.

 

이럴 때 filter, Interceptor, AOP를 사용할 수 있다.

 

🍎 Filter, Interceptor, AOP 차이 - 호출 시기

출처 : http://goddaehe.tistory.com

 

1. Filter

Filter는 Spring이 실행 되기 전에 실행되며 WAS (Tomcat) 에서 처리를 해주게 된다.

 

Request / Response 즉, HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 처리 한다.

 

따라서 아래와 같은 처리에 적합하다.

  • 공통된 보안 및 인증/인가 관련 작업(XSS방어)
  • 이미지/데이터 압축 및 문자열 인코딩 변환 처리
  • Spring과 분리되어야 하는 기능
  • 모든 요청에 대한 로깅

즉, 스프링과 무관하게 전역적으로 처리해야 하는 작업들을 처리할때 사용.

 

 

2. Interceptor

Interceptor는 Dispatcher Servlet에 N개 등록 될 수 있다. -> DS가 해당 요청을 처리 가능한 Intercepter에게 할당

(Ex. 로그인 체크, 권한 체크, 프로그램 실행시간 계산작업, 로그 확인 Interceptor)

 

스프링의 모든 빈 객체에 접근 할 수 있기에 아래와 같은 처리에 적합하다.

  • 세부적인 보안 및 인증/인가 공통 작업 (특정 사용자는 특정 기능을 사용 못하게 막음)
  • API 호출에 대한 로깅
  • Controller로 넘겨주는 정보(데이터)의 가공
    • 필터와 다르게 HttpServletRequest나 HttpServletResponse 등과 같은 객체를 제공받으므로 객체 자체를 조작할 수는 없다
    • 대신 해당 객체가 내부적으로 갖는 값은 조작할 수 있으므로 컨트롤러로 넘겨주기 위한 정보를 가공 가능
    • ex> JWT 토큰 정보를 파싱해서 컨트롤러에게 사용자의 정보를 제공하도록 가공

즉, 로그인 체크, 권한체크, 프로그램 실행시간, 계산 작업 로그 확인 등의 작업에 사용된다.

 

 

3. AOP

Interceptor와 Filter는 주소(URL)로 대상을 구분해서 걸러내야하는 반면,

AOP는 주소, 파라미터, 애노테이션 등 PointCut이 지원하는 다양한 방법으로 대상을 지정할 수 있다.

 

즉 URL 기반이 아닌 PointCut 단위로 동작한다.

 

이 때문에 비즈니스 로직의 메서드 실행 전, 후 단위까지 핸들링 할 수 있다.

 

 

 

 

참고

https://velog.io/@miot2j/Spring-Filter-Interceptor-AOP-%EC%B0%A8%EC%9D%B4-%EB%B0%8F-AOP%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-Logging%EC%9D%84-%EA%B5%AC%ED%98%84%ED%95%9C-%EC%9D%B4%EC%9C%A0

반응형

'Back-end > Spring' 카테고리의 다른 글

[Spring] WebClient 라이브러리를 활용한 외부 API 호출 시 발생하는 scanAvailable 에러  (0) 2025.06.04
[Spring] React에서 Set-Cookie가 보이지 않아요  (0) 2025.04.23
[Spring] Docker-Compose를 활용한 CI / CD 구축  (1) 2025.03.18
[Spring] com.auth0 vs jsonwebtoken.jjwt  (1) 2025.02.16
[Spring] JPA 벌크 연산이란?  (0) 2025.02.01
  1. 🍎 Filter, Interceptor, AOP 차이 - 호출 시기
  2. 참고
'Back-end/Spring' 카테고리의 다른 글
  • [Spring] WebClient 라이브러리를 활용한 외부 API 호출 시 발생하는 scanAvailable 에러
  • [Spring] React에서 Set-Cookie가 보이지 않아요
  • [Spring] Docker-Compose를 활용한 CI / CD 구축
  • [Spring] com.auth0 vs jsonwebtoken.jjwt
류건
류건
개발 일지
  • 류건
    건's Dev
    류건
  • 전체
    오늘
    어제
    • 분류 전체보기 (96) N
      • Back-end (56) N
        • Spring (31) N
        • Nest.js (3)
        • Next.js (2)
        • Node.js (3)
      • Infra & Cloud (5) N
        • Cloud Computing (6)
        • Docker (3)
        • AWS (7)
      • Java (2)
      • Computer Science (12)
        • Computer Network (0)
        • Operating System (0)
        • 정보 보호와 시스템 보안 (12)
      • 회고록 (1)
        • 우아한테크코스 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Webflux
    public key
    WebClient
    CI/CD
    db
    Spring
    정보보호
    티스토리챌린지
    오블완
    ssl
    고가용성
    Spring Boot
    https
    EC2
    JWT
    nginx
    aws
    어노테이션
    보안
    Docker
    Github Actions
    Kafka
    Lock
    CORS
    Nest.js
    JPA
    node.js
    CD
    ddl-auto
    express.js
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
류건
[Spring] filter vs AOP vs Interceptor
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.