1. 定义一个Filter的实现, 标注@WebFilter注解
2. 在启动类上标注@ServletComponentScan
3. SpringBoot启动时, @ServletComponentScan会导入一个servlet组件扫描注册器--ServletComponentScanRegistrar,这个注册器会注册一个用于扫描注册servlet组件的后处理器--ServletComponentRegisteringPostProcessor,这个处理器中会创建一个专用于扫描servlet组件的扫描器(将@WebFilter注解作为过滤注解类型), 该扫描器会在后处理beanFactory阶段扫描Filter实现的bean定义并注册到spring容器.且内嵌Tomcat容器在启动时会将过滤器设置到ServletContext实例上
4. 发起请求时, request对象会从servletContext实例中找这些过滤器,构造成一个过滤器链, 实现对请求前后的过滤能力.
5. 过滤器主要类: Filter, FilterChain,FilterConfig.
其中FilterConfig用于承载过滤器的所有配置, 并生成过滤器
FilterChain用于传递request和response给下一个过滤器, 实现参数传递
Filter的doFilter方法是主要的业务过滤方法.
springboot对servlet的Filter的支持原理
原文:https://www.cnblogs.com/wangxuejian/p/15302911.html