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
微信群:
抖音|B站|小红书:李明明-架构师
Youtube:
https://www.youtube.com/channel/UC0fNuJK7Ldi-0b9pvkKs7KA