SpringBoot:自定义Filter

本文详细介绍如何在SpringBoot中自定义Filter,包括实现Filter接口、编写带有@Configuration注解的类,以及通过FilterRegistrationBean将自定义Filter添加到过滤链中。文章提供了完整的代码示例,展示了设置拦截规则、过滤器名称和顺序的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot中没有web.xml ,无法按照Spring中的方式自定义Filter。在SpringBoot中我们需要编写声明@Configuration 注解的类,并将我们自定义的filter 通过 FilterRegistrationBean 实例添加到springboot 的过滤链中。

1 自定义filter

实现javax.servlet.Filter接口,实现 Filter 方法doFilter方法

public class UrlFilter implements Filter {
    Logger logger = LoggerFactory.getLogger(UrlFilter.class);
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        String requestURI = httpServletRequest.getRequestURI();
        StringBuffer requestURL = httpServletRequest.getRequestURL();
        logger.info("requestURI:" +requestURI+" "+"requestURL:"+requestURL);
        filterChain.doFilter(httpServletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }
}

2.添加@Configuration 注解,将自定义Filter加入过滤链

 

定义@Configuration 注解的类 并将自定义的filter 通过 FilterRegistrationBean 实例对象加入到过滤链中

2.1 FilterRegistrationBean 中方法

  • setFilter 设置自定义过滤器
  • setUrlPatterns 设置拦截规则
  • setName 设置过滤器名称
  • setOrder 设置过滤器顺序

2.2 实例代码

@Configuration
public class WebConfiguration {
    @Bean
    public FilterRegistrationBean testFilterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new UrlFilter());
        List<String> urlList = new ArrayList<>();
        urlList.add("/*");
        registration.setUrlPatterns(urlList);
        registration.setName("UrlFilter");
        registration.setOrder(1);
        return registration;
    }
}

3.测试结果

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值