Interceptor vs AOP vs Spring Filter 모두 공통 기능을 끼워넣는 기술이라 헷갈려서 쓰는 글임 ~-~
동작 시점, 범위, 사용 목적이 다르다고 한다.
Filter (비유 : 건물 입구 보안 게이트)
- 웹 애플리케이션 전역 / 서블릿, 정적자원까지 포함해서 가로 챔
- DispatcherServlet 진입 전 후 / 서블릿 컨테이너 레벨에서 동작 / 즉, 스프링 MVC에 들어오기 전에 요청 응답 가로챔
- 스프링 밖의 자원 JSP, 이미지, CSS, JS 등 모든 요청, 응답
- 주로 인코딩 처리(UTF-8), 보안(권한 체크), CORS 설정, XSS 필터링, 공통헤더 추가 등에 사용
Interceptor (사무실 문 앞 보안 체크)
- 스프링 MVC 컨트롤러 전용 가로채기
- DispatcherServlet과 Controller 사이에서 동작 / preHanle 컨트롤러 실행 전, postHandle 실행 후, afterCompletion 뷰 렌더링 후 제어 가능
- 스프링 MVC 컨트롤러로 들어오는 요청만 적용 (정적 리소스 제외)
- 주로 로그인 세션 체크, 권한 검사, 실행 시간 측정, 로깅, 공통 데이터 모델 추가 등에 사용
AOP (회의실 안 누군가가 말할 때 자동으로 녹음기 작동)
- 스프링 Bean 메서드 호출 자체를 가로채서 공통 기능 삽입
- 스프링 컨테이너가 관리하는 Bean 메서드 실행 전후 동작
- 프록시 패턴 기반 (메서드 호출을 가로챔.)
- 스프링 빈 (주로 Service, Repository 계층) 에서만 동작
- 주로 트랜잭션 관리, 로깅, 성능 모니터링, 공통 예외 처리, 보안 체크 등에 사용
실행 순서 : Filter - Intercepotr - AOP - Interceptor - Filter
'공간정보아카데미' 카테고리의 다른 글
Spring - Bean 주입 / XML vs JavaConfig (0) | 2025.09.06 |
---|---|
Spring Boot - REST API (0) | 2025.09.06 |
Spring AOP - LogAdivce 구현 예제 (0) | 2025.09.06 |
MyBatis - Logging (0) | 2025.09.04 |
Spring MVC (0) | 2025.09.03 |