Interceptor, Filter, AOP의 차이 정리

종원유·2021년 8월 15일
0

Spring

목록 보기
2/10

Interceptor, Filter, AOP의 차이점은 어느정도 이해하고 있지만 언제까지나 두루뭉실하게 알고 있을 순 없다는 생각이 들기 시작했다...
생각 난 김에 정리해야겠다고 마음을 먹었고 관련 내용들을 찾아보고 알아보면서 정리 작성하기로 하였다.

먼저, Interceptor, Filter, AOP는 주로

  • 로그인 관련(세션체크),
  • 권한체크,
  • XSS(Cross site script) 방어,
  • PC와 모바일 웹의 분기처리,
  • 로그,
  • 페이지 인코딩 등

공통 업무를 프로그램 흐름의 앞, 중간, 뒤에서 공통처리를 위해 전, 후에 추가적으로 이루어지는 작업에 활용하기 위해 사용된다.

위 사진을 보면 실행 순서는 Filter가 가장 밖에 위치하고, Interceptor, AOP 순서이다.
Filter와 Interceptor의 경우 Dispatcher Servlet 안 쪽과 바깥 쪽에서 Servlet 단위에서 실행되고, AOP의 경우는 메서드 앞에서 Proxy 형태로 실행된다.

  1. 서버를 실행시켜서 서블릿이 올라오는 동안에 init이 실행되고, 그 후 doFilter가 실행
  2. 컨트롤러에 들어가기 전 preHandler가 실행
  3. 컨트롤러에서 나와 postHandler, after Completion, doFilter 순으로 진행
  4. 서블릿 종료 시 destroy가 실행

1. Filter

  • 요청과 응답을 거른 뒤 정제하는 역할
  • 스프링 컨텍스트 외부에 존재하여 스프링과 무관한 자원에 대해 동작한다.

서블릿 필터는 Dispatcher Servlet 이전에 실행이 되는데 필터가 동작하도록 지정된 자원의 앞단에서 요청내용을 변경하거나, 여러가지 체크를 수행할 수 있다.(Dispatcher Servlet 이전)

자원의 처리가 끝난 후 응답내용에 대해서도 변경 처리를 할 수 있다.(Dispatcher Servlet 이후 실행 )

Web.xml에 등록하고, 인코딩 변환 처리, XSS방어 등의 요청에 대한 처리로 사용

필터의 실행 메서드
Init() - 필터 인스턴스 초기화
doFilter - 전/후 처리
Destroy - 필터 인스턴스 종료

2. Interceptor

  • 요청에 대한 작업 전/후로 가로챈다.

인터셉터는 스프링의 Dispatcher Servlet이 컨트롤러를 호출하기 전, 후로 끼어들기 때문에 스프링 컨텍스트 내부에서 Controller에 관한 요청과 응답에 대해 처리한다.
인터셉터는 여러 개를 사용할 수 있고 로그인 체크, 권한 체크, 프로그램 실행 시간 계산작업 로그확인 등 업무에 사용

인터셉터의 실행 메서드
preHandler() - 컨트롤러 메서드 실행되기 전
postHandler() - 컨트롤러 메서드 실행 직 후 view페이지 렌더링 되기 전
afterCompletion() - view페이지가 렌더링 되고 난 후

3. AOP

  • OOP를 보완하기 위해 나온 개념
  • 객체 지향의 프로그래밍을 했을 때 중복을 줄일 수 없는 부분을 줄기이 위해 종단면(관점)에서 바라보고 처리한다.

주로 로그, 트랜잭션, 에러 처리 등 비즈니스단의 메서드에서 조금 더 세밀하게 조정하고 싶을 때 사용한다.

Interceptor나 Filter는 주소로 대상을 구분해서 걸러야하고, AOP는 주소, 파라미터 애노테이션 등 다양한 방법으로 대상을 지정할 수 있음.
파라미터는 JoinPoint, ProceedingJoinPoint 등을 활용한다.

AOP의 포인트 컷
@Before : 대상 메서드의 수행 전
@After : 대상 메서드의 수행 후
@After-returning : 대상 메서드의 정상적인 수행 후
@After-throwing : 예외발생 후
@Around : 대상 메서드의 수행 전/후

AOP에 관해서 추 후에 더 정리해서 내용을 추가해보려고 한다.

참고
갓대희의 작은공간
https://goddaehee.tistory.com/154

profile
개발자 호소인

0개의 댓글