-
Spring Interceptor, Filter, AOP 와 각 차이점Spring 2023. 3. 16. 01:02
Interceptor
Spring Interceptor는 스프링 프레임워크에서 제공하는 기능으로, 컨트롤러의 메서드 호출 전후에 원하는 처리를 수행할 수 있습니다. 일반적으로 로그인 여부 체크, 권한 체크, 인증 토큰 체크 등의 기능을 수행합니다. Interceptor는
HandlerInterceptor
인터페이스를 구현하고,WebMvcConfigurer
인터페이스를 구현하여 설정할 수 있습니다.Interceptor의 특징은 다음과 같습니다.
- 컨트롤러의 메서드 호출 전후에 처리를 수행합니다.
- 컨트롤러가 처리하는 요청만 가로챕니다.
HandlerInterceptor
인터페이스를 구현합니다.
Filter
Filter는 Servlet API에서 제공하는 기능으로, 요청과 응답을 가로채서 원하는 처리를 수행할 수 있습니다. 일반적으로 인코딩 처리, XSS 공격 방지, 인증 처리 등의 기능을 수행합니다. Filter는
javax.servlet.Filter
인터페이스를 구현하고,web.xml
파일에서 설정할 수 있습니다.Filter의 특징은 다음과 같습니다.
- 요청과 응답을 가로챕니다.
- 모든 요청에 대해 처리를 수행합니다.
javax.servlet.Filter
인터페이스를 구현합니다.
AOP
AOP(Aspect Oriented Programming)는 프로그래밍 패러다임 중 하나로, 관심사(Concern)를 분리하여 모듈화하는 방법입니다. AOP는 로깅, 트랜잭션 처리, 보안 등의 공통적인 기능을 모듈화하여 여러 모듈에서 공통으로 사용할 수 있도록 지원합니다.
- Interceptor와 Filter는 공통적인 기능을 컨트롤러나 요청과 응답에 적용하는 방법으로 처리하는 반면, AOP는 프로그램의 여러 곳에서 공통적으로 수행되는 기능을 횡단 관심사(Cross-cutting Concerns)라는 추상화 단계로 분리하여 처리합니다.
차이점
- Spring Interceptor와 Filter의 가장 큰 차이점은 가로채는 범위입니다. Interceptor는 컨트롤러가 처리하는 요청만 가로채지만, Filter는 모든 요청에 대해 처리를 수행합니다.
- Interceptor는 스프링 프레임워크에서 제공하는 기능으로, 스프링의 ApplicationContext에서 빈을 주입받을 수 있습니다. 반면, Filter는 Servlet API에서 제공하는 기능으로, 스프링의 ApplicationContext를 직접 참조할 수 없습니다. 따라서 Interceptor는 스프링의 ApplicationContext에 등록된 빈을 주입받아 사용할 수 있는 반면, Filter는 그렇지 않습니다.
- Interceptor는 컨트롤러의 메서드 호출 전후에 처리를 수행할 수 있으므로, 컨트롤러에 종속적인 기능을 수행할 수 있습니다. 반면, Filter는 요청과 응답을 가로채는 범위가 넓으므로, 컨트롤러에 종속적이지 않습니다.
- Interceptor와 Filter는 각각의 범위에서 처리하고, AOP는 여러 객체에서 공통으로 수행되는 횡단 관심사를 모듈화하여 처리합니다.
'Spring' 카테고리의 다른 글
Spring Entity, DTO, VO (0) 2023.03.16 [Webflux] Reactor Hot And Cold Publisher (0) 2023.02.22 Spring IoC와 DI에 관하여 (0) 2023.02.20 Spring Boot 구글 OAuth2 로그인 구현 방법(spring-securify-oauth2) (0) 2023.02.16 Spring에서 Service class를 만들때 반드시 Interface를 구현해야할까 (0) 2020.02.28