[Spring] Filter & Interceptor & AOP개발/기능 개발2023. 5. 29. 20:31
Table of Contents
실행 순서:Filter → Interceptor → AOP → Interceptor → Filter
필터의 특징
- Filter는 WAS단에 위치하고 있어 spring 자원이 아니다.
- doFilter() 메소드를 이용해 요청, 응답에 대해 동작한다.
- Request, Response 객체에 관여할 수 있다.
- 스프링의 예외 처리가 되지않는다.
적용
- Servlet Request, Response
- spring과 분리되어야 하는 기능
- 이미지/데이터 압축 및 문자열 인코딩
- 모든 요청에 대한 로깅
- 공통된 보안 및 인증/인가
인터셉터의 특징
- spring 컨테이너에 있는 spring 자원이다.
- preHandler(), postHandler()를 이용해서 요청과 응답에 대한 처리가 분리되어있다.
- Request, Response 객체에 관여할 수 없다.
- 스프링의 예외 처리가 가능하다.
적용
- API 호출에 대한 로깅
- 세부적인 보안 및 인증
- 세션 및 쿠키 체크
- Controller로 넘겨주는 데이터
AOP
- 메서드에 대해 전후로 자유롭게 설정가능하다.
- Interceoptor와 filter와 다르게 주소, 파라미터, 애노테이션 등 다양한 방법으로 대상을 지정할 수 있다.
적용
메소드 마다 반복되는 코드가 있을 경우 AOP로 관리한다.
예를 들어 시간 측정을 하고싶다면 시간 측정 코드를 메서드마다 작성해야하는 불편함이 있다.
이때 AOP를 사용하면 코드를 한번만 작성해서 각 메소드에 적용 시킬 수 있다.
적용 방법
- 메소드 실행 전 후
- @Before: 대상 메서드의 수행 전
- @After: 대상 메소드의 수행 후
- @After-returning: 대상 메소드의 정상적인 수행 후
- @After-throwing: 예외발생 후
- @Around: 대상 메서드의 수행 전, 후
'개발 > 기능 개발' 카테고리의 다른 글
[Spring] IoC & DI (0) | 2023.05.24 |
---|---|
[인증] JWT(JSON Web Token) (0) | 2023.04.19 |
[Spring] Rest Docs와 Swagger UI (0) | 2023.04.11 |
[Spring] Microservice 관리를 위한 Eureka Server 와 Spring Cloud Gateway (0) | 2023.02.26 |
@뽀글뽀글 개발자 :: 뽀글뽀글 개발 일지
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!