Sobes.tech
Junior — Middle

Quali metodi conosci per scegliere il candidato appropriato quando ci sono diverse opzioni di implementazione di una dipendenza in un Bean?

sobes.tech AI

Risposta dell'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;
    }
}

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