You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot安全配置:新手实现用户密码加密时遭遇PasswordEncoder Bean注入错误

解决Spring Boot中PasswordEncoder Bean注入失败的问题

你遇到的问题核心很明确:你的UsersService没有被Spring容器纳入管理,导致Spring无法处理类中的@Autowired注入请求——哪怕你已经在SecurityConfiguration里正确定义了PasswordEncoder的Bean。

快速解决方案:给UsersService添加Spring组件注解

在UsersService类上添加@Service注解,让Spring能够扫描到这个类并将其注册为容器中的Bean:

import org.springframework.stereotype.Service;
import org.springframework.security.core.userdetails.UserDetailsService;

@Service // 新增这个注解
public class UsersService implements UserDetailsService {
    @Autowired
    UsersRepository repo;
    @Autowired
    private PasswordEncoder passwordEncoder;

    public Users save(Users u) {
        String encodpass=passwordEncoder.encode(u.getPassword());
        String confpass=passwordEncoder.encode(u.getConfirmepass());
        u.setConfirmpass(confpass);
        u.setPassword(encodpass);
        u.setLock(false);
        u.setEnable(true);
        return repo.save(u);
    }
}

错误原因解析

  • 你在SecurityConfiguration中通过@Bean注解确实生成了PasswordEncoder的实例,但Spring只会对自身管理的Bean执行依赖注入逻辑。
  • 你的UsersService没有标注@Service(或@Component、@Repository等Spring组件注解),Spring无法识别这个类的存在,自然不会处理其中的@Autowired字段,也就出现了"找不到PasswordEncoder Bean"的错误。

额外排查点(若添加注解后仍报错)

  • 确认UsersService所在的包属于Spring Boot启动类的扫描范围(默认扫描启动类所在包及其子包)
  • 检查启动类上是否存在@SpringBootApplication注解(该注解包含@ComponentScan,负责自动扫描组件)

内容的提问来源于stack exchange,提问作者dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 16:12:32