일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 연결리스트
- JPQL
- 백트래킹
- 다대다
- execute
- FetchType
- 힙
- 데코레이터
- dfs
- 지연로딩
- eager
- 비관적락
- SQL프로그래밍
- fetch
- 이진탐색
- BOJ
- PS
- 스토어드 프로시저
- exclusive lock
- 동적sql
- 다대일
- 낙관적락
- 즉시로딩
- CHECK OPTION
- 연관관계
- 유니크제약조건
- shared lock
- querydsl
- 일대다
- 스프링 폼
- Today
- Total
흰 스타렉스에서 내가 내리지
Filter, Interceptor, AOP의 차이 본문
공통 업무에 관련된 코드를 모든 페이지마다 작성해야 한다면 중복된 코드가 많아지고, 서버의 부하를 주고, 유지보수도 쉽지 않게 된다.
따라서 공통 부분을 따로 빼서 관리하는게 좋은데,
이 때 사용할 수 있는 것이 이 세가지.
1. Filter
2. Interceptor
3. AOP
Interceptor와 Filter는 Servlet 단위에서 실행된다. 반면 AOP는 메소드 앞에 Proxy 패턴의 형태로 실행된다.
실행순서를 보면 Filter가 가장 밖에 있고, 그 안에 Interceptor, 그 안에 AOP가 있는 형태이다.
따라서 요청이 들어오면 Filter → Interceptor → AOP → Interceptor → Filter 순으로 거치게 된다.
1. Filter
Spring 이 아닌 톰캣과 같은 웹 컨테이너 영역.
일반적으로 인코딩 변환처리, XSS 방어 등의 요청에 대한 처리로 사용된다.
메서드 : init(), doFilter(), destroy()
- HTTP 또한 Spring이 아닌 WAS에서 처리하는 것이니까 HTTP Request/Response에 대한 로깅은 Filter에서 처리하는게 적절하다.
2. Interceptor
Spring이 제공하는 레이어로, DispatcherServlet이 호출되기 전, 호출된 후에 끼어들기 때문에 Spring Context 내부에서 요청과 응답을 가공할 수 있다.
인터셉터는 여러개를 동시에 사용할 수 있다.
Spring Security, 로그인체크, 권한체크, 프로그램 실행시간 계산작업 등의 처리로 사용된다.
메서드 : preHandler(), postHandler(), afterCompletion()
3. AOP
OOP를 보완하기 위해 나온 개념
객체지향 프로그래밍을 했을 때 줄일 수 없는 부분을 줄이기 위해 종단면(관점)에서 바라보고 처리한다.
주로 로깅, 트랜잭션, 에러처리 등 비즈니스 단의 메서드에서 조금 더 세밀하게 조정하고 싶을 때 사용한다.
AOP의 포인트컷
1) @Before : 대상 메서드의 실행 전
2) @After : 대상 메서드의 실행 후
3) @After-returning : 대상 메서드의 정상적인 실행 후
4) @After-throwing : 예외 발생 후
5) @Around : 대상 메서드의 실행 전/후
'Spring' 카테고리의 다른 글
@Transactional(readOnly = true) (0) | 2023.01.18 |
---|---|
스프링에서 Bean을 주입받는 방식 (0) | 2023.01.17 |
Spring Interceptor , 스프링 인터셉터 (0) | 2023.01.16 |
Spring WebFlux (0) | 2023.01.01 |
spring security와 jwt를 이용한 로그인 (0) | 2022.10.04 |