Filter vs AOP vs Interceptor

CO빈·2024년 10월 27일
0

백엔드

목록 보기
4/8
post-thumbnail

Filter vs AOP vs Interceptor

요청이 들어오면 filter-> interceptor -> aop -> interceptor -> filter 순으로 거친다

Filter

  • 서블릿 단위에서 실행

  • DispatherServlet 전 실행

  • 요청과 응답을 거른뒤 정제하는 역할

  • 인코딩 변환 처리, XSS방어 등의 요청/응답에 대한 변경/확인 작업이 주가 된다.

  • 스프링 외부에 존재하여 스프링과 무관한 자원에 대해 동작한다

  • 주소로 대상을 구분

  • web.xml에 설정한다

Interceptor

  • 서블릿 단위에서 실행

  • DispathcerServlet 후 실행

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

  • Controller(Handler)에 관한 요청과 응답에 대해 처리

  • 스프링 내부에 존재하여 스프링의 모든 빈 객체에 접근 가능하다

  • 로그인 체크, 권한체크, 프로그램 실행시간 계산작업 로그확인 등의 작업을 처리

  • 주소로 대상을 구분

스프링 인터셉터 동작과정

메서드명역할
preHandler()컨트롤러를 실행하기 전 실행 -> false를 리턴하면 컨트롤러를 실행하지 않는다.
postHandler()컨트롤러가 정상적으로 실행된 이후에 실행. 익셉션을 발생하면 실행되지 않는다.
afterCompletion()뷰가 클라이언트 응답을 전송한 뒤 실행. 컨트롤러에서 익셉션 발생시 Exception 파라미터에 전달되고, 발생하지 않으면 null이 전달된다. 컨트롤러 실행 후 로그를 남기거나, 실행 시간을 기록하는 등의 후처리를 위한 메서드.

AOP

  • 메소드 앞에 Proxy패턴의 형태로 실행

  • 메소드 전후의 지점에 자유롭게 설정

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

  • 주소, 파라미터, 애노테이션 등 다양한 방법으로 대상을 지정

0개의 댓글

관련 채용 정보