filter란?

필터는 DispatcherServlet 이전에 실행 되는데 필터가 동작하도록 지정된 자원 앞단에서 요청내용을 변경하거나, 여러가지 체크를 수행할 수 있습니다.

스프링 어플리케이션에서 빈으로 등록되지만 톰캣과 같은 웹 어플리케이션 서버에서 관리되며 자원의 터리가 끝난 후 응답내용을 변경하는 처리도 가능합니다.

일반적으로 인코딩 변환 처리, XSS방어 등의 처리로 사용됩니다.

필터 객체를 초기화해 서비스에 등록하는 init 메서드, url pattern에 맞는 모든 http 요청이 DispatcherServlet으로 전달 되기 전 Web Application Server에서 실행되는 doFilter 메서드, 필터 객체를 서비스에서 제거하고 사용하던 자원을 반환하는 destroy 메서드를 사용해서 구현합니다.

 

Interceptor란?

인터셉터는 스프링의 DispatcherServlet이 컨트롤러를 호출하기 전,후로 끼어들어 동작하며 스프링 컨텍스트 내부에서 컨트롤러에 관한 요청과 응답에 대해 처리합니다.

스프링의 모든 빈 객체에 접근할 수 있으며, 여러게의 인터셉터를 사용할 수 있고 로그인 체크, 권한 체크, 프로그램 실행시간 계산작업 로그확인 등의 업무에 인터셉터가 사용됩니다.

컨트롤러 메서드가 실행되기 전 처리하는 preHandler(), 메서드와 컨트롤러 메서드 실행 직 후 view 페이지가 렌더링 되기 전에 처리하는 postHandler(), view페이지가 렌더링 되고 난 후에 처리하는 afterCompletion()등의 메서드를 사용해 구현합니다.

 

AOP란?

OOP를 보완하기 위해 나온 개념(관점 지향 프로그래밍)

객체 지향 프로그래밍을 했을 때 중복을 줄일 수 없는 부분을 줄이기 위해 종단면(관점)에서 바라보고 처리합니다.

주로 '로깅', '트랜젝션', '에러처리'등 비지니스단의 메서드에서 조금 더 세밀하게 조정하고 싶을 때 사용합니다.

Intercaptor나 Filter와는 달리 메소드 전후에서 자유롭게 설정이 가능합니다.

Interceptor와 Filter는 주소로 대상을 구분해서 걸러내는 반면, AOP는 주소, 파라미터, 어노테이션 등 다양한 방법으로 대상을 지정할 수 있습니다.

AOP의 Advice와 HandlerInterceptor의 가장 큰 차이는 파라미터의 차이입니다. Advicer의 경우 JoinPoint나 ProceedingJoinpoint 등을 활용해서 호출하는 반면 HandlerInterceptor는 Filter와 유사하게 HttpServletRequest, HttpServletResponse를 파라미터로 사용합니다.

'스터디' 카테고리의 다른 글

prometheus,grafana 란?  (0) 2023.01.03
도커란?  (0) 2023.01.03

+ Recent posts