Задать вопрос
@Nightmare058

Почему возникла циклическая зависимость?

Добрый вечер.
Делаю REST API, опираясь на следующий туториал
https://habr.com/ru/post/482552/

И почему-то появилась циклическая зависимость
Конкретно этот момент сделан именно как в статье
61ad458eafe45539318553.png

Пробовал добавить аннотацию Lazy, выдает ошибку
61ad460fcaa05103891377.png

Вот ссылка на гит,
Помогите, пожалуйста, разобраться в причинах
https://gitlab.com/alkella99/notes_api/-/tree/master
  • Вопрос задан
  • 531 просмотр
Подписаться 1 Простой 19 комментариев
Пригласить эксперта
Ответы на вопрос 2
xez
@xez Куратор тега Java
TL Junior Roo
@Configuration
public class AppConfig {

    @Autowired
    @Lazy
    UserService userService;

    @Bean
    public BCryptPasswordEncoder bCryptPasswordEncoder() {
        return new BCryptPasswordEncoder(5);
    }

    @Autowired
    protected void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userService).passwordEncoder(bCryptPasswordEncoder());
    }
}


@Configuration - это не бин, не сервис. Не надо туда ничего аутовайрить.
@Autowired
    protected void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userService).passwordEncoder(bCryptPasswordEncoder());
    }
- тут вообще какая-то аброкадабра. Что в конфиге делает void? Почему он бросает эксепшн?

Если вам нужно какие-то действия произвести после постройки бина, подумайте насчет аннотации @PostConstruct

Можно попробовать, например, в UserService добавить:
...
    @Autowired
    AuthenticationManagerBuilder auth;

  @PostConstruct
    void init() {
        auth.userDetailsService(this).passwordEncoder(bCryptPasswordEncoder);
    }
...
Ответ написан
@Nightmare058 Автор вопроса
Решил это все, указав в application.properties:
spring.main.allow-circular-references: true
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы