栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot Filter 简单应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot Filter 简单应用

SpringBoot Filter 过滤器基础知识

SpringBoot的过滤器是基于Servlet的Filter实现的,所以在原理上没有实质的变化,只是使用方式上有点区别

基于FilterRegistrationBean实现

实现过滤器有很多种方式,这里介绍其中一种,基于FilterRegistrationBean实现过滤器,只需2步即可

前提准备:准备一个spring-boot项目即可,业务代码示例如下

@RestController
public class DemoController {
    @PostMapping("/zx/demo/test")
    public String test() {
        System.out.println("hello test");
        return "hello";
    }
}

过滤器实现步骤如下

首先定义一个过滤器类,实现Filter接口,代码如下

public class baseFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("过滤前置处理");
        chain.doFilter(request, response);
        System.out.println("过滤后置处理");
    }
}

然后将过滤器类手动创建出来,设置到FilterRegistrationBean,springboot会自动将其注册到过滤链中

@Configuration
public class FilterConfiguration {
    @Bean
    public FilterRegistrationBean registrybaseFilter() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        baseFilter baseFilter = new baseFilter();
        filterRegistrationBean.setFilter(baseFilter);
        filterRegistrationBean.setOrder(-1);
        filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
        filterRegistrationBean.setName("baseFilter");
        return filterRegistrationBean;
    }
}

这里额外引入了一个Configuration,为了方便所有的过滤器统一管理

通过以上的代码,就完成了一个过滤器的实现,当请求任何一个接口,都会执行过滤代码,效果如下

过滤前置处理
hello test
过滤后置处理
过滤器使用场景

在实际工作中,实现基础架构能力有3大利器,都是基于拦截器、过滤器、AOP来实现的,过滤器就是其中之一。

过滤器的使用场景主要有日志、监控、鉴权等,详细介绍如下

日志

  • 在日志中增加Trace
  • 打印请求的耗时

监控

  • 上报接口请求的信息,比如成功、失败、耗时

鉴权

  • 获取用户信息,解析账号,放入全局上下文
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/686410.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号