차근차근/Spring

필터, 인터셉터, AOP

예쁜꽃이피었으면 2022. 1. 11. 16:54

웹 개발 시 공통부분의 관리를 위한 방법 (3)

1) Filter

2) Interceptor

3) AOP

https://goddaehee.tistory.com/154

필터와 인터셉터의 차이 

대상 필터(Filter) 인터셉터(Interceptor) AOP
관리되는 컨테이너 웹 컨테이너 스프링 컨테이너  
Request/Response
조작가능 여부
o x  
용도 - 보안 관련 공통 작업
- 모든 요청에 대한 로깅
또는 감사
- 이미지/데이터 압축
및 문자열 인코딩
- 인증/인가 등과 같은 공통 작업
- Controller로 넘겨주는 정보의 가공
- API호출에 대한 로깅 또는 감사
 
대상지정 주소로 구분 주소로 구분 주소, 파라미터,어노테이션 등 ..
실행위치 Servlet단위  Servlet단위 메소드앞 Proxy패턴의 형태로 실행
실행순서 1 2 3

 

1. Filter (필터)

- 스프링과 무관하게 전역적으로 처리해야 하는 작업들을 처리

- 디스패처 서블릿에 요청이 전달되기 전/후에 URL패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능 제공.
- 스프링 컨테이너가 아닌 톰캣과 같은 웹컨테이너에 의해 관리가 되므로 디스패처 서블릿으로 가기전에 요청을 처리하는 것이다.

- 자원의 처리가 끝난 후 응답내용에 대해서도 변경하는 처리를 할 수 있는데 보통 web.xml에 등록하고 일반적으로 인코딩 변환처리, xss방어 등의 요청에 대한 처리로 사용된다.

- ServletRequest , ServletResponse객체를 조작할 수 있다는 점에서 Interceptor보다 훨씬 강력한 기술이다.

 

1-1. 필터의 실행 메서드

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

2) doFilter() - 전/후 처리

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

 

 

 

2. Interceptor(인터셉터)

- 요청에 대한 작업 전/후를 가로챈다.

- 스프링의 디스패처 서블릿이 컨트롤러를 호출하기 전/후로 끼어들기 때문에 spring context 내부에서 controller(Handler)에 관한 요청과 응답에 대해 처리한다.

- 클라이언트의 요청과 관련해 전역적으로 처리해야 하는 작업들을 처리

- 스프링의 모든 빈 객체에 접근할 수 있다.

- 객체를 조작할 수는 없지만 객체가 내부적으로 갖는 값을 조작할 수 있으므로 Controller로 넘기기 위한 정보를 가공하는데 용이하다.

 

2-1. 인터셉터의 실행 메서드

1) preHandler() - 컨트롤러 메서드가 실행되기 전

2) postHandler() - 컨트롤러 메서드 실행 직후 / view페이지 렌더링 되기 전

3) afterCompletion() - view 페이지가 렌더링 되고 난 후

 

 

3. AOP

- OOP를 보안하기 위해 나온 갠ㅁ

- 객체지향의 프로그래밍을 했을 때 중복을 줄일 수 없는 부분을 줄이기 위해 종단면 관점에서 바라보고 처리한다..어렵..

- 주로 로깅, 트랜잭션, 에러처리 등 비즈니스단의 메서드에서 조금 더 세밀하게 조정하고 싶을 때 사용

- 필터나 인터셉터와 달리 메소드 전/후의 지점에 자유롭게 설정이 가능하다.

 

3-1. AOP포인트컷

1) @Before : 대상 메서드의 수행 전

2) @After : 대상 메서드의 수행 후

3) @After-returning : 대상 메서드의 정상적인 수행 후

4) @After-throwing : 예외발생 후

5) @Around : 대상 메서드의 수행 전/후 

 

 

 

 

 


https://goddaehee.tistory.com/154

 

[Spring] Filter, Interceptor, AOP 차이 및 정리

[Spring] Filter, Interceptor, AOP 차이 및 정리 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ [Spring] 필터, 인터셉터, AOP 정리 ] 입니다. : ) 공통 프로세스에 대한 고민 자바 웹 개발을 하다보면, 공통..

goddaehee.tistory.com

https://mangkyu.tistory.com/173

 

[Spring] 필터(Filter) vs 인터셉터(Interceptor) 차이 및 용도

Spring은 공통적으로 여러 작업을 처리함으로써 중복된 코드를 제거할 수 있도록 많은 기능들을 지원하고 있다. 이번에는 그 중에서 필터(Filter) vs 인터셉터(Interceptor)의 차이에 대해 알아보고자

mangkyu.tistory.com

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형