2016년 2월 11일 목요일

Spring aop, Interceptor, filter 차이점


InterceptorFilterAOP
실행 위치서블릿서블릿메소드
실행 순서213
설정 위치xml or javaweb.xmlxml or java
실행 메소드preHandler
postHandler
afterCompletion
init
dofilter
destroy
pointcut으로 @after, @before,
@around등 위치를 지정하여
자유롭게 메소드 생성 가능

 표를 설명해보자면, interceptor와 filter는 서블릿 단위에서 실행됩니다. 반면에 AOP는 메소드의 앞에 Proxy 패턴을 이용해서 실행됩니다.

그래서 실행순서에서도 차이가 생깁니다. filter가 가장 겉에 있고, 그 안에 interceptor 그리고 그 안에 aop가 들어있는 식의 구조입니다.
request가 filter를 거쳐 interceptor 쪽으로 들어가고 aop를 거쳐 다시 나오면서 interceptor와 filter를 거치는 식 입니다.

실행되는 메소드를 기준으로 설명하면, 서버를 실행시켜 서블릿이 올라오는 동안에 init이 실행되고, 그 후 dofilter가 실행됩니다.
그 후 컨트롤러에 들어가기 전에 preHandler가 실행되고, aop가 실행된 후에 컨트롤러에서 나와 postHandler, after Completion, dofilter 순서대로 진행되고, 서블릿 종료시 destory가 실행 될 것입니다.

그림으로 표현해봅시다.

AOP의 경우에는 Interceptor나 Filter와 달리 메소드 전후의 지점을 자유롭게 설정가능하고, interceptor와 filter가 주소로 밖에 걸러낼 대상을 구분 할 수 없는 것에 비해서 AOP는 주소, 파라미터, 어노테이션등 다양한 방법으로 대상을 지정할 수 있는 장점이 있습니다.

*reference

  • http://blog.naver.com/platinasnow/220035316135
Share:

0 개의 댓글:

댓글 쓰기