这是同时在spring配置类中使用@Autowired和@Bean注解出现bean已经注入的问题

如以下代码就会出现该错误

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
 
    @Autowired
    private PasswordEncoder passwordEncoder;

原因:

同一个类中已经存在bean对象,就不需要再依赖注入了。

两种解决方法

1.单独写一个配置类(或者写其他配置类中),将BCryptPasswordEncoder()加入到ioc容器中

@Component
public class PwdConfig{

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

2.直接使用passwordEncoder()通过.方法调用即可。

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
    
    public void test() {
        passwordEncoder().encode("123");
    }
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐