면접 준비를 하고있다.
진짜 엄청 많이 부족하다는 것을 느꼈고, 그 중에서 하나를 정리해보려고 한다.
웹 개발을 하다보면 비즈니스 로직 앞, 뒤로 공통적으로 처리해야 될 기능들이 존재한다. ex) 로그, 인증, 인가 등등
공통으로 빼서 따로 관리를 하는 것이 AOP라고 생각했다.
하지만 Filter와 Interceptor도 있다는 것을 알게 되었고, 그 부분을 정리하려고한다!!
보시는 것과 같이 호출되는 시점이 다르다.
DispatcherServlet이란?
HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러이다.
Filter
는 DispatcherServlet이 실행되기 전에 수행이 된다.
일반적으로 스프링과 무관하게 전역적으로 처리해야 하는 작업들을 처리할때 사용한다고 한다.
- 보통 web.xml에 등록한다.
Interceptor
는 스프링의 DistpatcherServlet이 컨트롤러를 호출하기 전, 후로 끼어들기 때문에 스프링 컨텍스트(Context, 영역) 내부에서 Controller(Handler)에 관한 요청과 응답에 대해 처리한다.
- 스프링의 모든 빈 객체에 접근 할 수있다.
AOP
는 객체 지향의 프로그래밍을 했을 때 중복을 줄일 수 없는 부분을 줄이기 위해 사용한다.
- '로그', '트랜잭션', '에러 처리'등 비즈니스단의 메서드에서 조금 더 세밀하게 조정하고 싶을 때 사용한다.
filter는 웹 컨테이너에서 관리가 되고 Interceptor는 스프링 컨테이너에서 관리가 된다!!