谁创建了FilterChainProxy实例?Spring Security过滤器机制疑问
谁在注入FilterChainProxy的实例?
Spring Boot 环境下
Spring Boot的Spring Security自动配置逻辑里,org.springframework.boot.autoconfigure.security.servlet.SecurityFilterChainConfiguration类负责创建并注册FilterChainProxy Bean:
- 该类会依赖容器中所有
SecurityFilterChain类型的Bean(也就是你自定义的过滤器链配置),通过构造器注入这些链来实例化FilterChainProxy。 - 核心代码片段大致如下:
@Bean public FilterChainProxy filterChainProxy(List<SecurityFilterChain> securityFilterChains) { return new FilterChainProxy(securityFilterChains); } - 这个Bean在容器中的默认名称是
springSecurityFilterChain,你可以通过这个名称追踪到它的创建逻辑。
纯Spring Security(非Spring Boot)环境下
- Java配置场景:
org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration类的springSecurityFilterChain方法会生成FilterChainProxy实例,它会把通过HttpSecurity构建的过滤器链注入进去。 - XML配置场景:传统的
<security:http>标签由Spring Security的NamespaceHandler解析,最终会自动注册FilterChainProxyBean(名称同样是springSecurityFilterChain),不需要手动写<bean>标签实例化。
为什么你没找到直接的new FilterChainProxy(..)调用?
Spring Security优先通过Spring容器管理Bean实例,而非硬编码直接创建,这样能充分利用依赖注入、生命周期管理等特性。你可以通过搜索Bean名称springSecurityFilterChain来定位创建逻辑,比直接找new调用更高效。
内容的提问来源于stack exchange,提问作者Shailesh Pratapwar
相关产品推荐
相关产品推荐

