Sobes.tech
Назад к вопросам
Junior — Middle
68

Какие методы ты знаешь для выбора подходящего кандидата при наличии нескольких вариантов внедрения зависимости в Bean?

Компании, где спрашивали
ИннотехИннотех

Ответ от нейросети

sobes.tech AI

При наличии нескольких кандидатов для внедрения зависимости в Bean в Spring можно использовать следующие методы выбора подходящего варианта:

  1. @Primary — помечает один из бинов как основной, который будет внедряться по умолчанию.

  2. @Qualifier — позволяет явно указать имя или квалификатор бина, который нужно внедрить.

  3. Именование бинов — если не использовать аннотации, Spring пытается сопоставить по имени поля и имени бина.

  4. @Resource(name = "beanName") — из JSR-250, внедряет бин по имени.

  5. Использование профилей (@Profile) — позволяет активировать определённые бины в зависимости от профиля приложения.

Пример с @Qualifier:

@Component
public class ServiceA implements MyService {}

@Component
public class ServiceB implements MyService {}

@Component
public class Client {
    private final MyService myService;

    public Client(@Qualifier("serviceB") MyService myService) {
        this.myService = myService;
    }
}

Таким образом, можно явно указать, какой бин внедрять, если их несколько.