SpringBoot-注解@WebFilter
参考文献
@WebFilter
使用
- 用
@WebFilter
时,Filter
被加载有两个条件:- 声明了
@WebFilter
- 在能被
@ServletComponentScan
扫到的路径之下
- 声明了
@WebFilter
和@Component
相同点
- 它们最终都被包装并实例化成为了
FilterRegistrationBean
- 它们最终都是在
ServletContextInitializerBeans
的构造器中开始被实例化
不同点
- 被
@WebFilter
修饰的过滤器会被提前在BeanFactoryPostProcessors
扩展点包装成FilterRegistrationBean
类型的BeanDefinition
,然后在ServletContextInitializerBeans.addServletContextInitializerBeans()
进行实例化; - 而使用
@Component
修饰的过滤器类,是在ServletContextInitializerBeans.addAdaptableBeans()
中被实例化成Filter
类型后,再包装为RegistrationBean
类型。 - 被@WebFilter修饰的过滤器不会注入
Order
属性,但被@Component
修饰的过滤器会在ServletContextInitializerBeans.addAdaptableBeans()
中注入Order
属性
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HoleLin's Blog!