SpringBoot环境下过滤器的应用

场景:SpringBoot中需要使用过滤器,且需要将Spring管理的Bean添加到过滤器中。
使用DelegatingFilterProxy,Spring官方推荐的方式,将 Filter 的职责委托给 Spring 管理的 Bean。

1.定义过滤器类

@Component
//@WebFilter(filterName = "myFilter",urlPatterns = "/*")
//这里不使用@WebFilter注解
public class MyFilter implements Filter {

    @Autowired
    private GreetingService greetingService;// 可以正常注入

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
        System.out.println("初始化了");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
        System.out.println("进入过滤器了");
    }

    @Override
    public void destroy() {
        Filter.super.destroy();
    }
}

2.使用@Bean注册

@Configuration
public class MyFilterConfig {

    @Bean
    public FilterRegistrationBean<DelegatingFilterProxy> mySpringFilter() {
        FilterRegistrationBean<DelegatingFilterProxy> registrationBean = new FilterRegistrationBean<>();
        registrationBean.setFilter(new DelegatingFilterProxy("myFilter"));
        registrationBean.addUrlPatterns("/*");
        registrationBean.setOrder(1);
        System.out.println("注册myFilter");

        return registrationBean;
    }
}
posted @ 2025-12-08 15:52  佩特莉可  阅读(0)  评论(0)    收藏  举报