필터
- 클라이언트로부터 오는 요청/응답에 대해 '최초'/'최종' 단계에 위치한다.
- Spring Context가 아닌 Web Application에서 관리한다.
- 유일하게 ServletRequest, ServletResponse 객체를 변환할 수 있다.
- 인증과 관련된 로직을 필터에서 처리하는 게 보통이다.
- request/response 관련 로깅 로직도 여기 넣는 편이다.
- 로깅 찍을 때 ContentCachingRequest/responseWrapper 로 받아서 찍으면 stream 관련 에러를 피할 수 있다.
- 대신 내부 로직 떄문에 실제로 찍을 때 doFilter보다 나중에 찍어야 한다.
- 특정 컨트롤러에만 필터를 걸고 싶을 때는 @WebFilter 어노테이션을 사용하는 방법이 있다.
인터셉터
- 필터와 유사하게 동작하지만 Spring Context에 등록된다.
- AOP와 유사하게 사용할 수 있다.
- 주로 인증 단계를 처리하거나 로깅할 때 쓴다.
- 하지만 인증 관련해서는 Spring-security로 처리하는 게 더 일반적이다.
'Backend > JAVA' 카테고리의 다른 글
디자인 패턴 (2) | 2024.03.07 |
---|---|
JAVA의 Thread (0) | 2024.03.05 |
데코레이터 패턴 (0) | 2024.03.05 |
자바의 reduce() (0) | 2024.03.04 |
자바의 비선형 자료구조 (0) | 2024.03.04 |