Spring项目启动报错:AuthService构造函数缺少PasswordEncoder Bean
问题排查与解决方案
核心原因:SecurityConfig未被Spring识别为配置类
你的SecurityConfig类缺少@Configuration注解,导致Spring无法扫描并注册其中定义的PasswordEncoder Bean,这是启动报错的直接原因。
修复步骤
给SecurityConfig添加@Configuration注解,让Spring识别该类为配置类并加载其中的Bean定义:
@EnableWebSecurity @Configuration // 新增此注解 @AllArgsConstructor public class SecurityConfig extends WebSecurityConfigurerAdapter { // 原有代码保持不变 }
额外排查点(若修复后仍有问题)
- 确认主启动类扫描范围:主启动类的
@SpringBootApplication默认扫描自身包及其子包,确保SecurityConfig所在的com.r.reservationproject.config包在扫描范围内。 - 检查Bean冲突:若其他配置类也定义了
PasswordEncoder类型的Bean,会导致Bean实例冲突,需保证全局仅存在一个该类型的Bean定义。 - 循环依赖检查:如果
UserDetailsService与AuthService存在循环依赖,可尝试给UserDetailsService的注入添加@Lazy注解延迟加载。
内容的提问来源于stack exchange,提问作者Elias
相关产品推荐
相关产品推荐

