
요청과 응답을 거른뒤 정제하는 역할이다.
HTTP 요청과 응답을 변경할 수 있는 재사용이 가능한 코드이다.
필터는 객체의 형태로 존재하며 클라이언트로부터 오는 요청과(Request) 최종자원(서블릿/JSP)사이에 위치하며, 클라이언트의 요청정보를 알맞게 변경할 수 있으며, 또한 필터는 최종 자원과 클라이언트로 가는 응답(Response)사이에 위치하여 최종 자원의 요청 결과를 알맞게 변경할 수 있다.
필터는 클라이언트의 요청을 필터체인의 다음단계에 보내는 것이 아니라, 다른자원의 결과를 클라이언트에 전송 가능하다.
필터의 이러한 기능은 사용자 인증이나, 권한 체크와 같은곳에 사용한다.

출처: https://dev-coco.tistory.com/173
인터셉터의 사용사례
클라이언트의 요청과 관련되어 전역적으로 처리해야 하는 작업들을 처리 할 수 있다.
출처: https://code-lab1.tistory.com/193
핵심기능과 부가기능으로 구분해 각각을 하나의 관점으로 보는것을 의미한다. (모듈화 하는 것)모듈화: 어떤 공통된 로직이나 기능을 하나의 단위로 묶은 것
출처: https://goddaehee.tistory.com/154 [갓대희의 작은공간]
Interceptor와 Filter는 Servlet 단위에서 실행된다. 반면에 AOP는 메소드 앞에 Proxy패턴의 형태로 실행된다.
서버를 실행시켜 서블릿이 올라오는 동안에 init이 실행되고, 그 후 doFilter가 실행된다.
컨트롤러에 들어가기 전 preHandler가 실행된다
컨트롤러에서 나와 postHandler, after Completion, doFilter 순으로 진행이 된다.
서블릿 종료 시 destroy가 실행된다.

출처: https://good-or-bad.tistory.com/43
Filter, Interceptor, AOP 이 3 가지 기능은 무슨 행동을 하기전에 먼저 실행하거나, 실행한 후에 추가적인 행동을 할 때 사용되는 기능들이다.

filter->interceiptor->aop의 순서대로 실행된다.
- filter는 사용자의 request를 받아서 servlet에 가기 전에 실행된다.
- interceptor는 controller에 가기 전에 실행된다.
- aop는 어드바이스에 따라 비즈니스 메소드가 호출될 때, 호출된 후, 예외가 발생하는 시점등에서 적용된다.
- Filter : spring과 무관한 servlet의 기술, url 기반으로 동작한다.
- Interceptor : spring의 기술, url 기반으로 동작, 빈 객체에 접근 가능하다.
- AOP : spring의 기술, pointcut 기반으로 동작, 웹과 무관하게 business logic과 연결해서 사용됨, 빈 객체에 접근 가능하다.