필터는 웹 서버의 일부이고, 인터셉터는 Spring MVC의 일부입니다. 필터는 요청이 디스패쳐 서블릿에 도착하기 전에 동작하고, 인터셉터는 디스패쳐 서블릿과 컨트롤러 사이에서 요청을 가로챕니다.

Spring Security 는 대표적인 필터
모든 request의 ip를 로깅하는 인터셉터를 구현해보자
implementation 'org.springframework.boot:spring-boot-starter-web'
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
}
public class LogInterceptor implements HandlerInterceptor {
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        logger.info("[preHandle][from " + getIP(request) + "]" + "[" + request.getMethod() + " " + request.getRequestURI() + "]");
        return true;
    }
    private String getIP(HttpServletRequest request) {
        String ipFromHeader = request.getHeader("X-FORWARDED-FOR");
        if (ipFromHeader != null && ipFromHeader.length() > 0) {
            return ipFromHeader;
        }
        return request.getRemoteAddr();
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        logger.info("[postHandle][" + response.getStatus() + "]");
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        logger.info("[afterCompletion][" + response.getStatus() + "][exception: " + ex + "]");
    }
}
HandlerInterceptor : Spring MVC 내에 작용하는 인터셉터는 모두 HandlerInterceptor 를 구현해야 함preHandle : request를 처리하기 직전에 핸들링postHandle : DispatcherServlet이 뷰를 랜더링하기 직전에 핸들링postHandle : DispatcherServlet이 뷰를 랜더링 한 이후1에서 생성한 WebConfig에 아래와 같이 인터셉터를 등록한다
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LogInterceptor());
    }
}
필터에도 추가로 로그를 남겨보았다
토큰 인증 성공한 경우

토큰 인증 실패한 경우

HandlerInterceptors vs. Filters in Spring MVC
Introduction to Spring MVC HandlerInterceptor