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;
}
}
浙公网安备 33010602011771号