스프링에서 Filter, Interceptor, AOP는 모두 어떤 동작 이전/이후에 추가적으로 처리해주어야 할때 사용한다.
기능적으로는 비슷한데 내부 구현적으로는 차이가 있다.
Filter, Interceptor : Sevlet 단위에서 실행
AOP : 메소드 앞에 proxy 패턴의 형태로 실행
그래서 실행 순서도 차이가 있다 ???
Filter -> Interceptor -> AOP -> Interceptor -> Filter 순이다
이미지 참조 : blog.naver.com/platinasnow/220035316135
Request -> Servlet Filter -> Dispatcher Servlet -> HandlerInterceptor -> Controller
1. 서버를 기동시켜 서블릿이 올라오는 동안 init 실행 되고 Filter의 doFilter 실행
2. 컨트롤러 이전에 Interceptor의 preHandler실행
3. 컨트롤러 빠져나온다음 Interceptor의 postHandler, afterCompletion 실행
4. Filter의 doFilter 진행
5. 서블릿 종료시 destroy 실행
AOP는 주로 비지니스 로직단에서 로깅,트랜잭션, 공통예외처리 에서사용한다.
참고
'DEVELOP > Backend' 카테고리의 다른 글
Spring에서 Async 처리 (@Async ) (0) | 2020.03.06 |
---|---|
테스트에서 @Transactionl 어노테이션 (0) | 2019.07.29 |
트랜잭션 속성 @Transactional (0) | 2019.07.29 |
RestTemplate 를 이용하여 API Get 하기 (0) | 2019.06.12 |
JPA 의 개념과 간단 예제 (0) | 2019.03.11 |