李明明架构师Sign in

Spring boot3系列4:过滤器

liming

李明明架构师Spring Boot 3系列第四课: 过滤器(Filter)

在构建api服务的时候

我们经常会需要验证身份、校验权限和风控等场景

这些场景我们可以通过filter或者Interceptor来做

那么今天我们来聊一下过滤器(Filter)

下面是一个简单的Filter:

@Order(1) @Component public class DemoFilter implements Filter {   private static final Logger log = LoggerFactory.getLogger(DemoFilter.class);   @Override   public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {   log.info("DemoFilter");   filterChain.doFilter(servletRequest, servletResponse);   } }

首先我们来解读代码:

@Order指定过滤器执行顺序

@Component告诉Sping这是一个Component

DemoFilter实现了Filter接口

大家看doFilter方法

这里要注意一下filterChan.doFilter(servletRequest, servletResponse)

这里过滤器的调用链

除非是要阻止这个请求继续执行

否则这里一定要去继续执行过滤器的调用链的

接下来演示怎样阻断请求:

@Order(1) @Component public class DemoFilter implements Filter {   private static final Logger log = LoggerFactory.getLogger(DemoFilter.class);   @Override   public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {   log.info("DemoFilter");   throw new RuntimeException("haha"); //  filterChain.doFilter(servletRequest, servletResponse);   } }

==============================

OK,大家有什么不懂的可以加QQ群讨论。

也可以直接在评论区交流

看到会回复。

Q群:559722761

微信群:

group qr

抖音|B站|小红书:李明明-架构师

Youtube:

https://www.youtube.com/channel/UC0fNuJK7Ldi-0b9pvkKs7KA