spring boot/spring boot
spring boot에서 filter
ballde
2021. 12. 4. 22:01
spring mvc request lifecycle
위의 사진은 spring이 컨트롤러 까지 가는데의 과정입니다.
보통 웹 개발을 하다보면 중복으로 처리하는 코드들이 많이 생깁니다. 인증, 인가, 세션, xss 방어 등을 필터, 인터셉터, AOP 등 상황에 맞게 처리합니다.
먼저 필터를 보겠습니다.
http 요청 및 응답을 가로채는데 사용됩니다.
- request를 필터링
- response를 필터링
@Component
public class SampleFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
Filter.super.init(filterConfig);
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
chain.doFilter(request, response);
}
@Override
public void destroy() {
Filter.super.destroy();
}
}
filter는 위의 3개를 오버라이드 할 수 있습니다. 여기서 dofilter는 필수입니다.
- init → 필터를 웹 컨테이너에 생성 후 초기화 할 때 호출
- doFilter → 필터체인으로 연결.
- filterChain은 filter들이 여러개 모여서 하나의 체인을 형성하는 것입니다.
- 그래서 순서를 지정할 수 있습니다.
- 체인의 가장 마지막에는 클라이언트가 요청한 최종 자원이 위치합니다.
- destroy → 웹 컨테이너에서 삭제될 때 호출