Filter
🔹 개요
- Servlet 스펙에서 제공하는 기본 필터 인터페이스
- Spring이 아닌 서블릿 컨테이너(Tomcat 등)에서 직접 실행되는 필터
- doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 메서드 구현 필요
🔹 특징
- 한 요청에 대해 여러 번 실행될 수 있음
- ex: RequestDispatcher.forward()나 include()를 사용할 경우
- 주로 @WebFilter, FilterRegistrationBean, 또는 FilterChainProxy 등을 통해 등록
OncePerRequestFilter
🔹 개요
- Spring에서 제공하는 추상 클래스
- javax.servlet.Filter를 상속한 Spring 전용 필터
- 한 요청당 한 번만 실행됨 (→ 이름 그대로)
- OncePerRequestFilter는 Spring에서 제공하는 추상 클래스이지만,
- 실제로는 서블릿 필터 인터페이스(
javax.servlet.Filter
)를 구현
🔹 특징
- doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) 메서드만 구현하면 됨
- include, forward 등의 내부 요청이 있어도 중복 실행 방지가 자동 적용됨
- Spring Security, CORS 처리 등에서 기본 베이스 필터로 자주 사용