如何从SecurityFilterChain接口找到对应的Bean声明
以下是几种实用的查找方法,无需死记硬背Bean定义:
IDE全局搜索
直接在IDE中搜索返回类型为SecurityFilterChain的@Bean方法,比如在IntelliJ IDEA里用@Bean + SecurityFilterChain作为搜索关键词,能直接定位到defaultSecurityFilterChain这类注册方法。也可以搜索SecurityFilterChain的实例化代码,跟踪http.build()的调用链路,找到Bean的注册位置。Spring Boot Actuator辅助查询
如果项目启用了Actuator的beans端点,访问/actuator/beans接口,搜索SecurityFilterChain类型的Bean条目,查看其中的resource和beanMethod属性,就能明确看到Bean是在哪个类的哪个方法中注册的。查看Spring Security自动配置类
Spring Security的默认SecurityFilterChainBean定义在SecurityFilterChainConfiguration自动配置类中,直接打开这个类就能找到defaultSecurityFilterChain方法。也可以在启动项目时添加--debug参数,查看自动配置报告,找到Security相关的配置项,定位到对应的配置类。调试追踪调用栈
在SecurityFilterChain接口的matches或getFilters方法上设置断点,当程序处理请求触发这个接口方法时,查看调用栈信息,就能顺着链路找到Bean的创建和注册源头。
内容的提问来源于stack exchange,提问作者user17968709

