필터 vs 인터셉터 vs AOP

자이로 체펠리·2022년 1월 31일
0

jwt인증,인가

목록 보기
2/3

지난 시간엔 jwt를 인증을 인터셉터 방식으로 구현했다고 했다.
코드를 작성하다 보면 공통된 역할을 하는 코드를 작성하곤 한다. 따로 메서드화할 수 도 있고, 이를 프레임워크나 인프라가 제공하는 기능을 이용할 수 도 있다. 필터, 인터셉터, AOP의 공통점은 이런 공통된 프로세스를 따로 관리해 주는 것이다.

저번 프로젝트에서 나는 메인 페이지에 대한 모든 요청을 인터셉터에서 인증 프로세스를 처리할 수 있도록 구현했다.

스프링에서는 이러한 작업을 filter, interceptor, AOP를 활용하여 분리해 관리할 수 있다. 이들의 역할과 차이점을 통해 쉽게 이해해 보고, 다음에는 filter, interceptor와 AOP의 활용 예시를 알아보자

  1. 필터와 인터셉터, AOP의 가장 큰 차이점은 적용 시점이 다르다는 것이다.
    순서대로 말하자면
    요청은 필터 -> 인터셉터 -> AOP 순으로 적용된다.

  2. 각 기능은 제공하는 주체가 다르다.
    필터는 web.xml로 작성하는데, 이는 was가 filter 기능을 제공하기 때문이다.
    인터셉터와 aop는 스프링이 제공하는 기능이다.

    흐름


    다음의 그림과 같이

  • 요청은 필터 -> 인터셉터 -> aop 순서를 거치게 되고,
    응답은 역순인 aop -> 인터셉터 -> 필터를 거치게 된다.
  • 필터와 인터셉터는 서블릿 단위에서 실행 되지만 aop는 메소드 앞에 proxy 패턴의 형태로 실행된다.

    역할과 개념

    1. filter

    개념 : 말 그대로 요청과 응답을 거른뒤 정제하는 역할을 한다.
    서블릿 필터는 디스패쳐 서블릿 이전에 실행되는데 필터가 동작하도록 지정된 자원의 앞단에서 요청내용을 변경하거나, 여러가지 체크를 수행할 수 있다.
    역할 : 인코딩이나, xss 방어 등의 요청에 대한 처리로 사용한다.

    2. interceptor

    개념 : 인터셉터는 디스페터 서블릿이 컨트롤러를 호출하기 전, 후로 끼어 들기 때문에 스프링 컨텍스트 내부에서 controller에 관한 응답에 대해 처리한다.
    역할 : 로그인 체크, 권한 체크, 프로그램 실행 시간 계산 작업 등

    3. AOP


    개념 : 관점 지향 프로그래밍으로 비즈니스 로직에서 핵심부분과 비핵심 부분의 관점으로 나눠 프로그래밍을 할 수 있개 한다.
    역할 : 인터셉터나 필터와 달리 메소드 전후의 지점에 자유롭게 설정이 가능하다.
    용어 : AOP와 관련한 용어도 존재한다.
    개념을 확실히 이해하고 사용해 보자
    용어설명
    aspect여러 객체에 공통적으로 적용되는 기능을 말한다.
    adviceaspect를 언제 핵심 코드에 적용할 지를 정의한다.
    joinpointadvice를 적용가능한 지점을 말한다.
    pointcutjointpoint의 부분집합으로 adivice가 적용되는 joinpoint를 나타낸다.
    weavingadvice를 핵심 코드에 적용하는 것을 말한다.

    마침

    저는 저번 프로젝트에서 인증에는 인터셉터를, 로깅 처리에는 aop를 사용했습니다. 다음 포스팅에서 코드와 함깨 개념을 어떻게 활용하는지 설명해 드리겠습니다. 참고
    밥줄과 취미사이::못먹어도 고
    니코딩코딩
profile
"경의를 표해라. 경의를 갖고 회전의 다음 단계로 나아가는 거다…… [LESSON 4] 다."

0개의 댓글