Ваша проблема связана с тем, как вы пытаетесь ввести кодировщик пароля (это видно из получаемого вами сообщения об ошибке).
Вы не можете просто попытаться внедрить реализацию интерфейса PasswordEncoder
, в данном случае BCryptPasswordEncoder
таким способом. Если вы хотите, чтобы он был легкодоступным и в контексте Spring (таким образом, доступным для инъекций при необходимости), вам нужно придерживаться другого подхода.
Создание экземпляра компонента вручную где-нибудь и отображение его в контексте с помощью аннотации bean
. Затем введите его, когда это необходимо. Простым примером вам будет следующее:
1) Создайте сервис с именем PasswordService
примерно так:
@Service
public final class PasswordService {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
Как упомянуто выше, это приведёт экземпляр кодировщика пароля в контекст.
Затем используйте его таким образом, когда это необходимо:
@Autowired
private PasswordEncoder passwordEncoder
Вы фактически избежите создания экземпляра кодировщика каждый раз вручную.