Sobes.tech
Junior — Middle

¿Qué métodos conoces para seleccionar al candidato adecuado cuando hay varias opciones para implementar una dependencia en un Bean?

sobes.tech AI

Respuesta de la IA

При наличии нескольких кандидатов для внедрения зависимости в 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;
    }
}

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