지난 시간엔 jwt를 인증을 인터셉터 방식으로 구현했다고 했다.
코드를 작성하다 보면 공통된 역할을 하는 코드를 작성하곤 한다. 따로 메서드화할 수 도 있고, 이를 프레임워크나 인프라가 제공하는 기능을 이용할 수 도 있다. 필터, 인터셉터, AOP의 공통점은 이런 공통된 프로세스를 따로 관리해 주는 것이다.
저번 프로젝트에서 나는 메인 페이지에 대한 모든 요청을 인터셉터에서 인증 프로세스를 처리할 수 있도록 구현했다.
스프링에서는 이러한 작업을 filter, interceptor, AOP를 활용하여 분리해 관리할 수 있다. 이들의 역할과 차이점을 통해 쉽게 이해해 보고, 다음에는 filter, interceptor와 AOP의 활용 예시를 알아보자
필터와 인터셉터, AOP의 가장 큰 차이점은 적용 시점이 다르다는 것이다.
순서대로 말하자면
요청은 필터 -> 인터셉터 -> AOP 순으로 적용된다.
각 기능은 제공하는 주체가 다르다.
필터는 web.xml로 작성하는데, 이는 was가 filter 기능을 제공하기 때문이다.
인터셉터와 aop는 스프링이 제공하는 기능이다.
다음의 그림과 같이
용어 | 설명 |
---|---|
aspect | 여러 객체에 공통적으로 적용되는 기능을 말한다. |
advice | aspect를 언제 핵심 코드에 적용할 지를 정의한다. |
joinpoint | advice를 적용가능한 지점을 말한다. |
pointcut | jointpoint의 부분집합으로 adivice가 적용되는 joinpoint를 나타낸다. |
weaving | advice를 핵심 코드에 적용하는 것을 말한다. |