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 → 웹 컨테이너에서 삭제될 때 호출