[Spring] Filter & Interceptor & AOP

실행 순서:Filter → Interceptor → AOP → Interceptor → Filter

 

필터의 특징

  • Filter는 WAS단에 위치하고 있어 spring 자원이 아니다.
  • doFilter() 메소드를 이용해 요청, 응답에 대해 동작한다.
  • Request, Response 객체에 관여할 수 있다. 

적용

  • Servlet Request, Response
  • spring과 분리되어야 하는 기능
  • 이미지/데이터 압축 및 문자열 인코딩
  • 모든 요청에 대한 로깅
  • 공통된 보안 및 인증/인가 

 

 

인터셉터의 특징

  • spring 컨테이너에 있는 spring 자원이다.
  • preHandler(), postHandler()를 이용해서 요청과 응답에 대한 처리가 분리되어있다.
  • Request, Response 객체에 관여할 수 없다.

적용

  • API 호출에 대한 로깅
  • 세부적인 보안 및 인증 
  • 세션 및 쿠키 체크
  • Controller로 넘겨주는 데이터 

 

AOP

  • 메서드에 대해 전후로 자유롭게 설정가능하다.
  • Interceoptor와 filter와 다르게 주소, 파라미터, 애노테이션 등 다양한 방법으로 대상을 지정할 수 있다.

적용

메소드 마다 반복되는 코드가 있을 경우 AOP로 관리한다.

예를 들어 시간 측정을 하고싶다면 시간 측정 코드를 메서드마다 작성해야하는 불편함이 있다.

이때 AOP를 사용하면 코드를 한번만 작성해서 각 메소드에 적용 시킬 수 있다.

 

적용 방법

  • 메소드 실행 전 후 
  • @Before: 대상 메서드의 수행 전
  • @After: 대상 메소드의 수행 후
  • @After-returning: 대상 메소드의 정상적인 수행 후
  • @After-throwing: 예외발생 
  • @Around: 대상 메서드의 수행 전, 후

'개발 > Spring' 카테고리의 다른 글

[Build] Maven, Gradle 빌드  (0) 2023.07.20
[Spring] Static 객체와 Bean의 차이  (2) 2023.06.28
[Spring] IoC & DI  (0) 2023.05.24
빌드와 컴파일의 차이  (0) 2023.04.25
[JPA] Query Method & JPQL  (0) 2023.04.23