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

Spring Boot 1.5.8中BCryptPasswordEncoder注入失败求助

解决Spring Boot 1.5.8中BCryptPasswordEncoder无法@Autowired注入的问题

我之前也踩过这个坑,在Spring Boot 1.5.x版本里,org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder并不会被自动注册为Spring Bean,这就是你触发NoSuchBeanDefinitionException的核心原因——Spring容器里根本找不到这个类的实例,自然没法完成注入。

解决起来很直接,手动给它注册一个Bean就行,具体步骤如下:

  • 创建一个配置类(比如命名为SecurityConfig),用@Configuration注解标记,然后在里面定义一个返回BCryptPasswordEncoder的方法并加上@Bean注解:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

@Configuration
public class SecurityConfig {

    @Bean
    public BCryptPasswordEncoder bCryptPasswordEncoder() {
        // 可选:指定加密强度参数,比如BCryptPasswordEncoder(10),默认值也是10
        return new BCryptPasswordEncoder();
    }
}
  • 确保这个配置类在Spring Boot主启动类的扫描范围内:要么和主类处于同一个包/子包下,要么主类上的@SpringBootApplication已经通过scanBasePackages参数包含了该配置类所在的包路径。

额外补充:如果你已经有自定义的Spring Security配置类(继承WebSecurityConfigurerAdapter的那种),也可以直接把这个@Bean方法放在那个配置类里,不用单独新建配置类,效果完全一致。

做完这些操作后重启项目,@Autowired BCryptPasswordEncoder passwordEncoder就能正常完成注入,上下文初始化异常也会消失。

内容的提问来源于stack exchange,提问作者Asif Kamran Malick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:48:26