3 подписчика
Почему при созданнии @Bean не в конфигурационном классе, а в компоненте - легче словить цикличную зависимость.
Бины можно создавать в обычных компонентах, не конфигурационных классах. Такая семантика бинов (без @Configuration) называется lite-bean - но об этом позднее.
Группирование бинов в классах @Configuration декомпозирует логику формирования bean-методов и классов-component-ов. Декомпозиция уменьшит вероятность того что вы будете вынуждены рефакторить сервисы, репозитории и прочие - из-за того что разложили бины в классы-компоненты.
И да, @Configuration - тоже @Component, но это только означает что класс автоматически попадает в список кандидатов на попадание в контекст Spring.
Ниже простой пример цикличной зависимости в с использованием lite-бинов. В данном коде бины из одного класса - требуются для конструктора другого. Проблема легко решается вынесением бинов в класс @Configuration
Около минуты
24 марта 2024