Filter
요청과 응답을 거른 뒤 정제하는 역할
DispatcherServlet 이전에 실행된다.
요청 내용을 변경하거나, 여러가지를 체크할 수 있고 응답에 대해서도 변경할 수 있다.
보통 인코딩 변환 처리, XSS 방어 등의 요청에 대한 처리에 사용된다
Interceptor
요청에 대한 작업 전/후로 가로챈다.
필터는 스프링 컨텍스트 외부에 존재해서 스프링과 무관한 자원에 대해 동작한다.
반면에 인터셉터는 스프링의 DispatcherServlet이 컨트롤러를 호출하기 전/후에 동작하기 때문에 스프링 컨텍스트 내부에서 컨트롤러에 관한 요청과 응답에 대해 처리한다.
스프링의 모든 빈 객체에 접근할 수 있다.
인터셉터는 여러개 사용할 수 있다.
로그인 체크, 권한 체크, 프로그램 실행시간 계산 작업, 로그 확인 등의 처리를 할 때 사용된다.
AOP
OOP를 보완하기 위해 나온 개념
로깅, 트랜젝션, 에러 처리 등 비지니스 단의 메서드에서 더 세밀하게 조정하고 싶을 때 사용한다.
인터셉터와 필터와는 다르게 메소드 전후 지점을 자유롭게 설정할 수 있다.
인터셉터와 필터는 주소를 대상으로 설정하지만, AOP는 주소, 파라미터, 어노테이션 등 여러 방법으로 대상을 지정할 수 있다.
AOP의 Advice와 HandlerInterceptor의 주요 차이점은 파라미터의 차이이다.
Advice는 JoinPoint나 ProceedingJoinPoint 등을 활용해서 호출한다.
HandlerInterceptor는 Filter와 유사하게 HttpServletRequest, HttpServletResponse를 파라미터로 사용한다.
참고: https://goddaehee.tistory.com/154
JWT Claim의 subject?
Claim의 주제, 토큰이 갖고 있는 문맥을 의미한다.