.
Spring Filter와 Filter Chain 완전 정리
1. Filter란?
Filter는 클라이언트 요청(Request)과 서버 응답(Response) 사이에 개입할 수 있는 객체다.
주로 인증, 로깅, 인코딩, 보안 처리 등에 사용된다.
즉, Controller에 도달하기 전에 공통 기능을 처리하는 중간 모듈이라고 보면 된다.
2. Filter Chain이란?
- 여러 개의 Filter가 순서대로 실행될 때, 이를 Filter Chain이라고 한다.
- 각 Filter는 자신이 수행할 작업을 마친 뒤, chain.doFilter(request, response)를 호출해야 다음 Filter나 Controller로 요청이 전달한다.
- chain.doFilter를 호출하지 않으면 요청이 더 이상 진행되지 않아, Controller가 실행되지 않는다.
3. Filter 적용 방법
(1) @Component로 등록
Spring이 자동으로 Bean으로 등록하고 Filter Chain에 포함한다.
@Component
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("필터 시작");
chain.doFilter(request, response); // 다음 필터 또는 Controller로 전달
System.out.println("필터 종료");
}
}
(2) FilterRegistrationBean으로 등록
Bean으로 등록하지 않고, 특정 URL 패턴과 실행 순서를 지정할 때 사용한다.
@Bean
public FilterRegistrationBean<MyFilter> myFilterRegistration() {
FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new MyFilter());
registration.addUrlPatterns("/api/*"); // 적용 URL 패턴
registration.setOrder(1); // 실행 순서
return registration;
}
4. Filter 사용 예시
- 인증 처리: JWT 토큰 검증, 세션 확인
- 로깅: 요청 URL, 파라미터 기록
- 공통 처리: 인코딩, CORS 설정
흐름 요약
클라이언트 요청 → Filter 1 → Filter 2 → Controller → Filter 2 종료 → Filter 1 종료 → 응답 반환
5. 오늘 배운 것 중 기억할 포인트
- Filter는 Controller에 도달하기 전 요청을 중간 처리할 수 있는 핵심 모듈이다.
- Filter Chain의 흐름과 chain.doFilter 호출 여부를 이해해야 요청이 정상적으로 진행된다.
'Programming > Spring' 카테고리의 다른 글
| Spring Security 권한 설정과 접근 제어 정리 (0) | 2025.09.16 |
|---|---|
| Spring Security와 JWT 인증/인가 (0) | 2025.09.16 |
| JWT 다루기 (0) | 2025.09.16 |
| 쿠키와 세션이란 무엇일까? (1) | 2025.09.15 |
| 인증과 인가란 무엇일까? (0) | 2025.09.15 |