
1️⃣ init()
public class CaramiFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
Filter.super.init(filterConfig);
log.info("CaramiFilter init()");
}
2️⃣ doFilter(request, response, FilterChain)
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
log.info("CaramiFilter dofilter() 실행 전 ");
//다음 필터 서블릿 호출
chain.doFilter(request,response);
log.info("CaramiFilter doFilter() 실행 후 ");
}
3️⃣ destory()
@Override
public void destroy() {
log.info("CaramiFilter destory()");
Filter.super.destroy();
}

1️⃣ doFilter(request, response)
public void doFilter(ServletRequest request, ServletResponse response)
throws IOException, ServletException {
if (currentFilterIndex < filters.length) {
// 현재 필터 실행 후, 다음 필터로 이동
filters[currentFilterIndex++].doFilter(request, response, this);
} else {
// 마지막 필터 이후에는 서블릿 실행
servlet.service(request, response);
}
}
@Slf4j
@Component
@Order(2)
public class CaramiFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
log.info("CaramiFilter dofilter() 실행 전 ");
chain.doFilter(request,response);
log.info("CaramiFilter doFilter() 실행 후 ");
}
}
@Slf4j
@Component
@Order(1)
public class UserFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
log.info("UserFilter doFilter 실행 전");
chain.doFilter(request,response);
log.info("UserFilter doFilter 실행 후");
}
}
📌 필터를 특정 URL에만 적용하는 방법 - 1
@Slf4j
@Component
@Order(2)
@WebFilter(urlPatterns = "/test/*")a- > 모든 요청이 들어왔을때 해당 필터를 거칠것이다.
public class CaramiFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
Filter.super.init(filterConfig);
log.info("CaramiFilter init()");
}
📌 필터를 특정 URL에만 적용하는 방법 - 2 (config 사용)
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean<CaramiFilter> caramiFilter(){
FilterRegistrationBean<CaramiFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new CaramiFilter());
registrationBean.addUrlPatterns("/test/*");
registrationBean.setOrder(2);
return registrationBean;
}
모든 url에 해당 필터가 적용된다 !