시작이 반

[Spring] 필터, 인터셉터, AOP 본문

Programming/Spring

[Spring] 필터, 인터셉터, AOP

G_Gi 2022. 8. 17. 22:00
SMALL

코드를 개발하다 보면 같은 로직이 필요한 부분이 여러군데 있을 것이고 이러한 부분을 함수로 분리해서 처리한다.

 

이와 비슷하게 Spirng에서 흐름상 공통으로 처리해야 하는 부분이 있을 것이고 이를 위한 것이 필터, 인터셉터, AOP이다.

 

필터, 인터셉터, AOP의 공통점은 공통된부분을 따로 빼내어 처리하는 것이다.

 

갓대희님의 포스팅 자료

필터(Filter)

필터는 스프링 컨테이너 외부에서 실행되는 공통 로직이다. 웹 컨테이너에 의해서 관리가 된다.

요청, 응답을 정제할 수 있으며 Dispatcherservlet 이전에 실행이 된다.

(Spring과 분리되어야 하는 기능, 공통된 인증/인가 기능 등)

 

필터 메소드

- init() : 필터 객체 초기화

- doFilter() : 필터 전/후 처리

- destory(): 필터 객체 종료, 자원 반환

 

인터셉터(Interceptor)

Spring이 제공하는 기술로 Dispatcherservlet 이 컨트롤러를 호출하기 전/후에 요청과 응답을 참조/가공할 수 있다.

스프링 컨테이너에의해 관리가 된다. 스프링의 모든 빈 객체에 접근 할 수 있다.

Dispatcherservlet 은 핸들러 매핑을 통해 컨트롤러를 찾도록 요청하고 그 결과로 실행 체인을 반환한다. 이 실행체인은 1개 이상의 인터셊터가 존재하면 순차적으로 인터셉터를 거쳐 컨트롤러가 살행되고 인터셉터가 없다면 바로 컨트롤러가 실행된다.

 

인터셉터 메소드

- preHandle : 컨트롤러 메소드가 실행되기 전

- postHandle : 컨트롤러 메소드가 실행직 후 view페이지 렌더링 전

- afterCompletion : view페이지가 렌더링 되고 난 후

 

AOP(관점지향 프로그래밍)

Spring의 특징중 하나이며 OOP를 보완하기 위해 나온 개념이다

어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 모듈화 하는 것이다.

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

 

AOP의 포인트컷

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

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

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

@After-throwing: 예외발생 후

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

 

 

참고

- https://engkimbs.tistory.com/746

- https://goddaehee.tistory.com/154

- https://mangkyu.tistory.com/173

LIST

'Programming > Spring' 카테고리의 다른 글

[Spring] 스프링 시큐리티 보일러 플레이트  (0) 2023.06.07
jwt  (0) 2021.12.21
[Spring] BindingResult, @Valid  (0) 2021.05.27
[Spring]Test 메모리 DB사용  (0) 2021.05.25
[Spring] 생명주기  (0) 2021.05.21