Java登录模块启动失败:PasswordEncoder Bean注入异常求助
解决PasswordEncoder Bean缺失问题
你的应用启动失败核心原因是:Spring容器中未注册org.springframework.security.crypto.password.PasswordEncoder类型的Bean,但AuthController通过@Autowired(required=true)强制要求注入该Bean,导致依赖无法满足。
直接解决方案是创建一个Spring配置类,定义PasswordEncoder的Bean:
package com.portfolio.anamorujaportfolio.Security.Config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; @Configuration public class SecurityConfig { @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } }
关键说明:
@Configuration标记该类为Spring配置类,容器会自动扫描并加载其中的Bean定义BCryptPasswordEncoder是Spring Security官方推荐的密码加密实现,自带加盐逻辑,安全性更高- 该Bean定义完成后,Spring会自动将其注入到
AuthController的passwordEncoder字段中,满足依赖注入要求
如果你已有Spring Security相关的配置类(比如继承WebSecurityConfigurerAdapter的类),也可以将passwordEncoder()方法直接放在该类中,效果一致。
添加配置类后重新启动应用,即可正常启动并在Postman中测试登录、注册接口。
内容的提问来源于stack exchange,提问作者ana mornig
相关产品推荐
相关产品推荐

