SpringBoot—创建Filter的两种方法

方法一

@Component
@Order(value = 1)
@Slf4j
public class DokbokSessionFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        log.error("经过过滤器-1");
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        log.error("过滤器初始化");
    }

    @Override
    public void destroy() {
        log.error("过滤器销毁");
    }
}
  • @Component 在spring容器中注册该filter
  • @Order(value = 1) 多个过滤器的过滤顺序
  • 这种方法只能拦截所有的URL,相当于【/】

方法二

这种方法可以定制每个filter可以拦截的url。

1、定义filter

@Slf4j
public class DokbokSessionFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        log.error("经过过滤器-1");
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        log.error("过滤器初始化");
    }

    @Override
    public void destroy() {
        log.error("过滤器销毁");
    }
}

2、定义Configuration


@Configuration
public class SessionConfiguration {

    @Bean
    public FilterRegistrationBean<Filter> filterRegistrationBean(){
        FilterRegistrationBean<Filter> registrationBean = 
                new FilterRegistrationBean<>();
        DokbokSessionFilter sessionFilter = new DokbokSessionFilter();

        registrationBean.setFilter(sessionFilter);
        registrationBean.addUrlPatterns("/provider/*");
        registrationBean.setOrder(1);
        return registrationBean;
    }
}

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注