미소의 세상

Spring- 필터, 인터셉터 AOP 차이 본문

Spring

Spring- 필터, 인터셉터 AOP 차이

짱미소 2022. 3. 11. 17:35

- Filter

- Interceptor

- AOP

세가지 기능이 모두 비슷한 기능을 하는데, 이들이 필요한 이유는 인증 처리라던지, XSS로부터 보안 처리 등

프로그램을 만들거나 작업을 할 때 공통되는 부분을 빼서 관리하는 것이다.

위와 같이 공통되는 기능을 처리해주는 기능을 Spring이 제공한다.

Filter, Interceptor, AOP의 흐름

순서는 Filter -> Interceptor -> AOP -> Interceptor -> Filter 순으로 이루어진다.

Filter와 Interceptor은 Servlet 단위에서 이루어진다.

 

1. Spring Filter

Dispatcher Servlet 영역에 들어가기 전 수행된다.

Controller 이후 응답 처리에 대해서도 변경, 조작을 수행할 수 있다.

일반적으로 인코딩 변환 처리, XSS 방어를 개발할 때 사용한다.

1.1 Filter 실행메소드

init() - 필터 인스턴스 초기화

doFilter() - 실제 처리 로직

destroy() - 필터 인스턴스 종료

 

 

2. Spring Interceptor

Filter는 스프링 컨텍스트 이전에 실행되어 스프링과 무관하다.

하지만 인터셉터의 경우에는 스프링의 DispatcherServlet이 Controller를 호출하기 전,후에 끼어들기 때문에 스프링 컨텍스트(Context,영역) 내부에서 Controller에 관한 요청응답에 관여한다.

그리고 스프링의 모든 @Bean에 접근이 가능하다.

preHandler에서 전처리가 이루어지고, postHandler에서 후처리를 한다.

2.1 Interceptor 실행메소드

preHandler() - Controller 실행 전

postHandler() - Controller 실행 후 view Rendering 실행 전

afterCompletion() - view Rendering 이후

 

 

 

3. Spring AOP

Controller 처리 이후 주로 비지니스 로직에서 실행된다.

주로 로깅, 트랜잭션, 에러 처리 등 비지니스 단의 메서드에서 구체적인 조정이 필요할 때 사용한다.

Filter와 Interceptor와 달리 메소드 전후 지점에서 자유롭게 설정이 가능하다.

AOP는 주소, 파라메터, 어노테이션 등 다양한 방법으로 대상을 지정할 수 있다.

 

'Spring' 카테고리의 다른 글

[Spring] AOP 란?  (0) 2022.10.19
@RequestParam, @PathVariable, @RequestBody  (0) 2022.10.11
Spring boot @Valid 어노테이션 종류  (0) 2022.04.15
[Spring] @Resource, @Autowired, @Inject 차이  (1) 2022.03.25
Spring vs Spring boot 비교  (1) 2022.02.27
Comments