这是同时在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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐