SpringBoot 实现 Filter 两种方式

70 阅读1分钟

SpringBoot自定义Filter

 

1 自定义Filter通过FilterRegistrationBean 类来注入

自定义Filter


public class Filter2 implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        System.out.println(" 进入 filter2 ..");
        chain.doFilter(request,response);
    }

    @Override
    public void destroy() {

    }
}

 

注入

@Configuration
public class config {

    @Bean
    public FilterRegistrationBean MyFilterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new Filter2());
        registration.addUrlPatterns("/*");
        registration.addInitParameter("paramName", "paramValue");//添加默认参数
        registration.setName("Filter2");
        registration.setOrder(1);//先后顺序
        return registration;

    }

}

 

 

2 自定义Filter通过 实现接口 Filter方法

 

自定义Filter

@WebFilter(urlPatterns = "/*")
public class Filter1 implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        System.out.println(" 进入 filter1 ..");
        chain.doFilter(request,response);
    }

    @Override
    public void destroy() {

    }
}

 

主方法上添加注解扫描 

@ServletComponentScan("com.example.demo.filter") //扫描Filter

 

 

结果(Filtte2 设置了优先级 所以在前)