Filter, Interceptor, AOP (필터, 인터셉터, AOP)
# Back-End/Spring

Filter, Interceptor, AOP (필터, 인터셉터, AOP)

Filter, Interceptor, AOP

Filter, Interceptor, AOP 모두 무슨 행동을 하기전에 먼저 실행하거나, 실행한 후에 추가적인 행동을 할 때 사용된다. 요청의 흐름에 따라 필터, 인터셉터, AOP의 차이점에 대해 알아봅니다.

 

전체 흐름, 차이점

출처 goddaehe.tistory.com

요청이 들어왔을 때 진행되는 순서는 Filter → Interceptor → AOP → Interceptor → Filter의 순으로 거치게 됩니다.

 

Filter의 역할

Filter는 J2EE표준 스펙 기능으로, Dispatcher Servlet에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공한다.

  1. Web Application에 등록한다.
  2. 스프링 컨텍스트 외부에 존재하여 스프링과 무관한 자원에 대해 동작한다.
  3. Request, Response 객체를 직접 조작할 수 있다.
  4. 인코딩 처리, 보안, 로그인과 권한 검사 등의 요청에 대한 처리

 

Interceptor의 역할

DistpatcherServlet 이 컨트롤러를 호출하기 전, 후로 끼어들어 스프링 컨텍스트(Context, 영역) 내부에서 Controller(Handler)에 관한 요청과 응답에 대해 처리한다.

  1. Spring의 Context에 등록한다.
  2. 스프링의 모든 Bean에 접근 할 수 있다.
  3. Request, Response 객체를 직접 조작할 수 없지만 request와 response 내부의 값
  4. 로그인 체크, 권한 체크

 

AOP

관점 지향 프로그래밍을 말하며, 객체 지향의 프로그램이에서 중복을 줄일 수 없는 부분을 줄이기 위해 하나의 관점으로 바라보고 처리한다.

  1. 로깅, 트랜잭션, 에러 처리 등
  2. 인터셉터 대신에 컨트롤러들에 적용할 부가기능을 어드바이스로 만들어 AOP 적용
  3. 컨트롤러는 파라미터, 리턴 값, 타입과 메소드가 일정하지 않고 호출 패턴도 정해져 있지 않기 때문에 번거로운 부가 작업이 생길 수 있다.
728x90