스프링 시큐리티를 적용하기 위해 의존을 추가하고 실행했더니 이런 창이 자동으로 나왔다. 난 의존에 스프링 시큐리티를 추가한 것 말고 아무것도 한게 없는데, 어떻게 이런 동작이 가능한가 궁금해 공부해봤다.

스프링 시큐리티 초기 화면
스프링 시큐리티는 서블릿 필터를 기반으로 한다고 한다.

서블릿 필터는 서블릿으로 들어가는 요청에 수행할 공통적인 작업을 수행하기 위한 컴포넌트다. 이러한 필터가 모인게 필터 체인이다.
우선 서플릿 필터가 어떻게 동작하는지부터 알아봐야 했다.
서블릿 필터는 Filter 인터페이스를 구현해 사용할 수 있다.

Filter 인터페이스
Filter 인터페이스를 구현한 서블릿 필터
@Component
public class TestFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("TestFilter.init");
Filter.super.init(filterConfig);
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("before test filter1");
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("after test filter1");
}
@Override
public void destroy() {
System.out.println("TestFilter.destroy");
Filter.super.destroy();
}
}