[Spring JPA] Spring의 공통 기능 처리: Filter vs Interceptor vs AOP

김재진·2026년 1월 22일

내일배움캠프

목록 보기
41/70

1. Filter vs Interceptor vs AOP 한눈에 비교

이 세 가지는 실행되는 시점과 관리되는 영역(Context)에서 가장 큰 차이가 남.

2. Interceptor (인터셉터) 깊이 보기

인터셉터는 DispatcherServlet과 Controller 사이에서 요청을 가로채는 역할을 함.

주요 메서드

  • preHandle(): 컨트롤러 실행 전. 리턴값이 false이면 요청을 중단.

  • postHandle(): 컨트롤러 실행 후, View 렌더링 전. 컨트롤러에서 예외 발생 시 호출되지 않음.

  • afterCompletion(): 모든 작업(View 렌더링 포함) 완료 후. 예외 발생 여부와 상관없이 실행되어 리소스 해제에 적합다.

핵심 포인트: 인터셉터는 스프링 빈에 접근할 수 있어, Filter보다 더 상세한 스프링 관련 로직을 처리하기 좋음.

3. AOP (Aspect Oriented Programming)

AOP는 "관점 지향 프로그래밍"으로, 비즈니스 로직에 숨어있는 공통 관심사(Cross-cutting Concerns)를 모듈화하는 기술.

주요 용어 정리

  • Aspect: 공통 기능을 모듈화한 것 (Advice + Pointcut).

  • Advice: 실제로 수행할 기능 (로직).

  • JoinPoint: Advice가 적용될 수 있는 위치 (메서드 실행, 필드 값 변경 등).

  • Pointcut: JoinPoint 중에서 실제로 Advice를 적용할 지점을 선정하는 표현식.

Advice의 실행 시점

  • @Before: 대상 메서드 실행 전.

  • @After: 결과와 상관없이 메서드 종료 후.

  • @AfterReturning: 메서드가 정상적으로 반환된 후.

  • @AfterThrowing: 예외가 발생했을 때.

  • @Around: 메서드 실행 전후를 모두 제어 (가장 강력함).

4. 핵심 요약 및 결론

  • Filter는 스프링 외부(웹 레이어)에서 가장 먼저 요청을 처리할 때 사용.

  • Interceptor는 컨트롤러와 관련된 공통 로직(로그인 여부 등)을 처리할 때 사용.

  • AOP는 메서드 단위의 세밀한 제어가 필요하거나 비즈니스 로직(Service 계층)의 중복을 제거할 때 사용.

5. 마무리

세 가지 개념이 모두 '가로챈다'는 점에서 비슷해 보이지만, 각각의 목적지와 영향 범위가 명확히 다르다. 특히 보안 로직은 Filter에서, 비즈니스 로깅은 AOP에서 처리하는 것이 왜 효율적인지 배울 수 있었다.

profile
개발공부 처음해보는 사람

0개의 댓글