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
'Backend > Spring+Boot' 카테고리의 다른 글
[Error] If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. (0) | 2021.03.17 |
---|---|
Spring Boot DevTools (0) | 2021.03.17 |
SpringBoot ServletFilter 구현 (0) | 2021.03.16 |
@ServletComponentScan (0) | 2021.03.16 |
Spring DB 연동 (0) | 2021.03.12 |