Backend/Spring+Boot

Filter, Interceptor, AOP

findmypiece 2021. 3. 16. 09:36
728x90

Filter, Interceptor, AOP 모두 어떠한 행동을 하기 전/후에 처리될

공통프로세스를 별도로 정의해 놓은 것들이다.

가장 큰 차이는 적용시점으로 Spring 환경을 기준으로 보면

DispatcherServlet 진입전 Filter 가 적용되고,

DispatcherServlet 진입후 Controller 메소드 진입 전에

Interceptor 가 적용되고 이어서 AOP가 적용된다.

그렇기 때문에 Interceptor, AOP에서는 Spring Bean을 참조할 수 있지만

Filter에서는 참조할 수 없다.

일반적으로 Filter는 Request, Response 자원 자체를 변경하는 용도로

한글처리를 위한 인코딩이나 XSS 공격 방어를 위한 HTML 태그 치환에 사용된다.

Interceptor는 Controller 메소드가 실행되기 전과

실행직 후 view페이지 렌더링 되기 전에 수행되며

Spring Bean을 적극활용하여 로그인 체크, 권한체크 등의 용도로 사용된다.

AOP는 Controller는 물론이고 Service, Repository 등의 모든 메소드가 대상이며

특정 메소드를 지정해서 전/후에 특정 로직이 수행되도록 할 수 있다.

주로 로깅, 트랜잭션, 에러 처리 등 비즈니스 로직의 공통관심사 분리 용도로 사용된다.

728x90