SMALL

스프링을 하다보면 인터셉터와 필터를 접하게 된다.

인터셉터와 필터의 차이점을 알아보자.


우선 다음 그림을 보자.


위의 그림을 보면 인터셉터와 필터는 컨트롤러에 들어가기전에 접근하는 것으로 나타나있다.


간단한 예시를 들어보면 로그인을 하지 않았는데 로그인 후의 페이지를 url로 접근을 하면 세션 값이 null로 되어있는데, 로그인 확인하는 컨트롤러에 접근하기전에 처리를 하면 성능이 더 좋아진다.


인터셉터와 필터의 호출 시점이 다른것이 보인다.



Interceptor


  • 사용시기
1. 요청 경로마다 접근 제어를 다르게 해야 할 때 사용
2. 특정 URL을 요청할 때 접근 내역을 기록하고 싶을 때 사용

  • Filter와 차이점
1. Spring bean을 받아 올 수 있음.
2. 처리 시점이 다르다.

  • 메서드
1. preHandle() : 컨트롤러 들어가기 전
2. postHandle() : 컨트롤러 들어가고 나온 후 뷰로 전송 전
3. afterCompletion() : 뷰까지 완료되고 나서



Filter


Filter는 Interceptor이 호출되기 전, DispatcherServlet에 요청이 들어오기 전에 호출 된다. 그리고 Filter는 web.xml에서 정의됨으로 Bean을 DI로 받을 수 없다.


  • 메서드
1. init() : Filter Instance 초기화
2. doFilter() : 전/후 처리
3. destroy() : Filter Instance 종료



결론


필자의 생각으론 필터의 경우 호출 시점이 자유롭지 않으므로, 스프링 기반으로 개발을 한다면 Interceptor을 사용하는 것이, 단순 Servlet 구현이라면 Filter 사용을 하는 것이 나을 꺼 같다.


Filter에서도 스프링 bean을 사용 할 수는 있다.



LIST

'전공 > Spring' 카테고리의 다른 글

POJO  (0) 2018.05.14

+ Recent posts