필터는 클라이언트의 요청을 필터링하기 위해 서블릿 실행 전후에 호출되는 객체이며, 공통 관심사를 처리하기에 적합한 기술이다. 예를들어 모든 페이지에서 로그인 유무를 확인해야 할 경우 각각의 컨트롤마다 로그인 유무를 체크 할 필요 없이, 필터를 이용하여 공통 로직을 한 곳에서 처리할 수 있다.
public interface Filter {
public default void init(FilterConfig filterConfig) throws ServletException{}
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException;
public default void destroy() {}
}
필터를 사용하려면 필터 인터페이스를 구현해야 한다.
@Slf4j
public class LogFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("log filter init");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
log.info("log filter doFilter");
}
@Override
public void destroy() {
log.info("log filter destroy");
}
}
@Configuration
public class Config {
@Bean
public FilterRegistrationBean logFilter() {
FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>();
filterRegistrationBean.setFilter(new LogFilter());
filterRegistrationBean.setOrder(1);
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
}
}
참조
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2